    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"> The ClassFile Structure
    034     *      in The Java Virtual Machine Specification</a>
    035     */
    036    public static final int JVM_CLASSFILE_MAGIC = 0xCAFEBABE;
    037
    038    /**
    039     * Major version number of class files for Java 1.1.
    040     *
    041     * @see #MINOR_1_1
    042     */
    043    public static final short MAJOR_1_1 = 45;
    044
    045    /**
    046     * Minor version number of class files for Java 1.1.
    047     *
    048     * @see #MAJOR_1_1
    049     */
    050    public static final short MINOR_1_1 = 3;
    051
    052    /**
    053     * Major version number of class files for Java 1.2.
    054     *
    055     * @see #MINOR_1_2
    056     */
    057    public static final short MAJOR_1_2 = 46;
    058
    059    /**
    060     * Minor version number of class files for Java 1.2.
    061     *
    062     * @see #MAJOR_1_2
    063     */
    064    public static final short MINOR_1_2 = 0;
    065
    066    /**
    067     * Major version number of class files for Java 1.2.
    068     *
    069     * @see #MINOR_1_2
    070     */
    071    public static final short MAJOR_1_3 = 47;
    072
    073    /**
    074     * Minor version number of class files for Java 1.3.
    075     *
    076     * @see #MAJOR_1_3
    077     */
    078    public static final short MINOR_1_3 = 0;
    079
    080    /**
    081     * Major version number of class files for Java 1.3.
    082     *
    083     * @see #MINOR_1_3
    084     */
    085    public static final short MAJOR_1_4 = 48;
    086
    087    /**
    088     * Minor version number of class files for Java 1.4.
    089     *
    090     * @see #MAJOR_1_4
    091     */
    092    public static final short MINOR_1_4 = 0;
    093
    094    /**
    095     * Major version number of class files for Java 1.4.
    096     *
    097     * @see #MINOR_1_4
    098     */
    099    public static final short MAJOR_1_5 = 49;
    100
    101    /**
    102     * Minor version number of class files for Java 1.5.
    103     *
    104     * @see #MAJOR_1_5
    105     */
    106    public static final short MINOR_1_5 = 0;
    107
    108    /**
    109     * Major version number of class files for Java 1.6.
    110     *
    111     * @see #MINOR_1_6
    112     */
    113    public static final short MAJOR_1_6 = 50;
    114
    115    /**
    116     * Minor version number of class files for Java 1.6.
    117     *
    118     * @see #MAJOR_1_6
    119     */
    120    public static final short MINOR_1_6 = 0;
    121
    122    /**
    123     * Major version number of class files for Java 1.7.
    124     *
    125     * @see #MINOR_1_7
    126     */
    127    public static final short MAJOR_1_7 = 51;
    128
    129    /**
    130     * Minor version number of class files for Java 1.7.
    131     *
    132     * @see #MAJOR_1_7
    133     */
    134    public static final short MINOR_1_7 = 0;
    135
    136    /**
    137     * Major version number of class files for Java 1.8.
    138     *
    139     * @see #MINOR_1_8
    140     */
    141    public static final short MAJOR_1_8 = 52;
    142
    143    /**
    144     * Minor version number of class files for Java 1.8.
    145     *
    146     * @see #MAJOR_1_8
    147     */
    148    public static final short MINOR_1_8 = 0;
    149
    150    /**
    151     * Major version number of class files for Java 9.
    152     *
    153     * @see #MINOR_9
    154     */
    155    public static final short MAJOR_9 = 53;
    156
    157    /**
    158     * Minor version number of class files for Java 9.
    159     *
    160     * @see #MAJOR_9
    161     */
    162    public static final short MINOR_9 = 0;
    163
    164    /**
    165     * @deprecated Use {@link #MAJOR_9} instead
    166     */
    167    @Deprecated
    168    public static final short MAJOR_1_9 = MAJOR_9;
    169
    170    /**
    171     * @deprecated Use {@link #MINOR_9} instead
    172     */
    173    @Deprecated
    174    public static final short MINOR_1_9 = MINOR_9;
    175
    176    /**
    177     * Major version number of class files for Java 10.
    178     *
    179     * @see #MINOR_10
    180     */
    181    public static final short MAJOR_10 = 54;
    182
    183    /**
    184     * Minor version number of class files for Java 10.
    185     *
    186     * @see #MAJOR_10
    187     */
    188    public static final short MINOR_10 = 0;
    189
    190    /**
    191     * Major version number of class files for Java 11.
    192     *
    193     * @see #MINOR_11
    194     */
    195    public static final short MAJOR_11 = 55;
    196
    197    /**
    198     * Minor version number of class files for Java 11.
    199     *
    200     * @see #MAJOR_11
    201     */
    202    public static final short MINOR_11 = 0;
    203
    204    /**
    205     * Major version number of class files for Java 12.
    206     *
    207     * @see #MINOR_12
    208     */
    209    public static final short MAJOR_12 = 56;
    210
    211    /**
    212     * Minor version number of class files for Java 12.
    213     *
    214     * @see #MAJOR_12
    215     */
    216    public static final short MINOR_12 = 0;
    217
    218    /**
    219     * Major version number of class files for Java 13.
    220     *
    221     * @see #MINOR_13
    222     */
    223    public static final short MAJOR_13 = 57;
    224
    225    /**
    226     * Minor version number of class files for Java 13.
    227     *
    228     * @see #MAJOR_13
    229     */
    230    public static final short MINOR_13 = 0;
    231
    232    /**
    233     * Minor version number of class files for Java 14.
    234     *
    235     * @see #MAJOR_14
    236     * @since 6.4.0
    237     */
    238    public static final short MINOR_14 = 0;
    239
    240    /**
    241     * Minor version number of class files for Java 15.
    242     *
    243     * @see #MAJOR_15
    244     * @since 6.6.0
    245     */
    246    public static final short MINOR_15 = 0;
    247
    248    /**
    249     * Minor version number of class files for Java 16.
    250     *
    251     * @see #MAJOR_16
    252     * @since 6.6.0
    253     */
    254    public static final short MINOR_16 = 0;
    255
    256    /**
    257     * Minor version number of class files for Java 17.
    258     *
    259     * @see #MAJOR_17
    260     * @since 6.6.0
    261     */
    262    public static final short MINOR_17 = 0;
    263
    264    /**
    265     * Minor version number of class files for Java 18.
    266     *
    267     * @see #MAJOR_18
    268     * @since 6.6.0
    269     */
    270    public static final short MINOR_18 = 0;
    271
    272    /**
    273     * Minor version number of class files for Java 19.
    274     *
    275     * @see #MAJOR_19
    276     * @since 6.6.0
    277     */
    278    public static final short MINOR_19 = 0;
    279
    280    /**
    281     * Major version number of class files for Java 14.
    282     *
    283     * @see #MINOR_14
    284     * @since 6.4.0
    285     */
    286    public static final short MAJOR_14 = 58;
    287
    288    /**
    289     * Major version number of class files for Java 15.
    290     *
    291     * @see #MINOR_15
    292     * @since 6.6.0
    293     */
    294    public static final short MAJOR_15 = 59;
    295
    296    /**
    297     * Major version number of class files for Java 16.
    298     *
    299     * @see #MINOR_16
    300     * @since 6.6.0
    301     */
    302    public static final short MAJOR_16 = 60;
    303
    304    /**
    305     * Major version number of class files for Java 17.
    306     *
    307     * @see #MINOR_17
    308     * @since 6.6.0
    309     */
    310    public static final short MAJOR_17 = 61;
    311
    312    /**
    313     * Major version number of class files for Java 18.
    314     *
    315     * @see #MINOR_18
    316     * @since 6.6.0
    317     */
    318    public static final short MAJOR_18 = 62;
    319
    320    /**
    321     * Major version number of class files for Java 19.
    322     *
    323     * @see #MINOR_19
    324     * @since 6.6.0
    325     */
    326    public static final short MAJOR_19 = 63;
    327
    328    /**
    329     * Default major version number. Class file is for Java 1.1.
    330     *
    331     * @see #MAJOR_1_1
    332     */
    333    public static final short MAJOR = MAJOR_1_1;
    334
    335    /**
    336     * Default major version number. Class file is for Java 1.1.
    337     *
    338     * @see #MAJOR_1_1
    339     */
    340    public static final short MINOR = MINOR_1_1;
    341
    342    /**
    343     * Maximum value for an unsigned short.
    344     */
    345    public static final int MAX_SHORT = 65535; // 2^16 - 1
    346
    347    /**
    348     * Maximum value for an unsigned byte.
    349     */
    350    public static final int MAX_BYTE = 255; // 2^8 - 1
    351
    352    /**
    353     * One of the access flags for fields, methods, or classes.
    354     *
    355     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.1-200-E.1"> Flag definitions for
    356     *      Classes in the Java Virtual Machine Specification (Java SE 9 Edition).</a>
    357     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.5"> Flag definitions for Fields
    358     *      in the Java Virtual Machine Specification (Java SE 9 Edition).</a>
    359     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.6"> Flag definitions for Methods
    360     *      in the Java Virtual Machine Specification (Java SE 9 Edition).</a>
    361     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.7.6-300-D.1-D.1"> Flag
    362     *      definitions for Inner Classes in the Java Virtual Machine Specification (Java SE 9 Edition).</a>
    363     */
    364    public static final short ACC_PUBLIC = 0x0001;
    365
    366    /**
    367     * One of the access flags for fields, methods, or classes.
    368     *
    369     * @see #ACC_PUBLIC
    370     */
    371    public static final short ACC_PRIVATE = 0x0002;
    372
    373    /**
    374     * One of the access flags for fields, methods, or classes.
    375     *
    376     * @see #ACC_PUBLIC
    377     */
    378    public static final short ACC_PROTECTED = 0x0004;
    379
    380    /**
    381     * One of the access flags for fields, methods, or classes.
    382     *
    383     * @see #ACC_PUBLIC
    384     */
    385    public static final short ACC_STATIC = 0x0008;
    386
    387    /**
    388     * One of the access flags for fields, methods, or classes.
    389     *
    390     * @see #ACC_PUBLIC
    391     */
    392    public static final short ACC_FINAL = 0x0010;
    393
    394    /**
    395     * One of the access flags for the Module attribute.
    396     *
    397     * @see #ACC_PUBLIC
    398     */
    399    public static final short ACC_OPEN = 0x0020;
    400
    401    /**
    402     * One of the access flags for classes.
    403     *
    404     * @see #ACC_PUBLIC
    405     */
    406    public static final short ACC_SUPER = 0x0020;
    407
    408    /**
    409     * One of the access flags for methods.
    410     *
    411     * @see #ACC_PUBLIC
    412     */
    413    public static final short ACC_SYNCHRONIZED = 0x0020;
    414
    415    /**
    416     * One of the access flags for the Module attribute.
    417     *
    418     * @see #ACC_PUBLIC
    419     */
    420    public static final short ACC_TRANSITIVE = 0x0020;
    421
    422    /**
    423     * One of the access flags for methods.
    424     *
    425     * @see #ACC_PUBLIC
    426     */
    427    public static final short ACC_BRIDGE = 0x0040;
    428
    429    /**
    430     * One of the access flags for the Module attribute.
    431     *
    432     * @see #ACC_PUBLIC
    433     */
    434    public static final short ACC_STATIC_PHASE = 0x0040;
    435
    436    /**
    437     * One of the access flags for fields.
    438     *
    439     * @see #ACC_PUBLIC
    440     */
    441    public static final short ACC_VOLATILE = 0x0040;
    442
    443    /**
    444     * One of the access flags for fields.
    445     *
    446     * @see #ACC_PUBLIC
    447     */
    448    public static final short ACC_TRANSIENT = 0x0080;
    449
    450    /**
    451     * One of the access flags for methods.
    452     *
    453     * @see #ACC_PUBLIC
    454     */
    455    public static final short ACC_VARARGS = 0x0080;
    456
    457    /**
    458     * One of the access flags for methods.
    459     *
    460     * @see #ACC_PUBLIC
    461     */
    462    public static final short ACC_NATIVE = 0x0100;
    463
    464    /**
    465     * One of the access flags for classes.
    466     *
    467     * @see #ACC_PUBLIC
    468     */
    469    public static final short ACC_INTERFACE = 0x0200;
    470
    471    /**
    472     * One of the access flags for methods or classes.
    473     *
    474     * @see #ACC_PUBLIC
    475     */
    476    public static final short ACC_ABSTRACT = 0x0400;
    477
    478    /**
    479     * One of the access flags for methods.
    480     *
    481     * @see #ACC_PUBLIC
    482     */
    483    public static final short ACC_STRICT = 0x0800;
    484
    485    /**
    486     * One of the access flags for fields, methods, classes, MethodParameter attribute, or Module attribute.
    487     *
    488     * @see #ACC_PUBLIC
    489     */
    490    public static final short ACC_SYNTHETIC = 0x1000;
    491
    492    /**
    493     * One of the access flags for classes.
    494     *
    495     * @see #ACC_PUBLIC
    496     */
    497    public static final short ACC_ANNOTATION = 0x2000;
    498
    499    /**
    500     * One of the access flags for fields or classes.
    501     *
    502     * @see #ACC_PUBLIC
    503     */
    504    public static final short ACC_ENUM = 0x4000;
    505
    506    // Applies to classes compiled by new compilers only
    507    /**
    508     * One of the access flags for MethodParameter or Module attributes.
    509     *
    510     * @see #ACC_PUBLIC
    511     */
    512    public static final short ACC_MANDATED = (short) 0x8000;
    513
    514    /**
    515     * One of the access flags for classes.
    516     *
    517     * @see #ACC_PUBLIC
    518     */
    519    public static final short ACC_MODULE = (short) 0x8000;
    520
    521    /**
    522     * One of the access flags for fields, methods, or classes.
    523     *
    524     * @see #ACC_PUBLIC
    525     * @deprecated Use {@link #MAX_ACC_FLAG_I}
    526     */
    527    @Deprecated
    528    public static final short MAX_ACC_FLAG = ACC_ENUM;
    529
    530    /**
    531     * One of the access flags for fields, methods, or classes. ACC_MODULE is negative as a short.
    532     *
    533     * @see #ACC_PUBLIC
    534     * @since 6.4.0
    535     */
    536    public static final int MAX_ACC_FLAG_I = 0x8000; // ACC_MODULE is negative as a short
    537
    538    // Note that do to overloading:
    539    // 'synchronized' is for methods, might be 'open' (if Module), 'super' (if class), or 'transitive' (if Module).
    540    // 'volatile' is for fields, might be 'bridge' (if method) or 'static_phase' (if Module)
    541    // 'transient' is for fields, might be 'varargs' (if method)
    542    // 'module' is for classes, might be 'mandated' (if Module or MethodParameters)
    543    /**
    544     * The names of the access flags.
    545     */
    546    private static final String[] ACCESS_NAMES = {"public", "private", "protected", "static", "final", "synchronized", "volatile", "transient", "native",
    547        "interface", "abstract", "strictfp", "synthetic", "annotation", "enum", "module"};
    548
    549    /** @since 6.0 */
    550    public static final int ACCESS_NAMES_LENGTH = ACCESS_NAMES.length;
    551
    552    /**
    553     * Marks a constant pool entry as type UTF-8.
    554     *
    555     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.7"> The Constant Pool in The
    556     *      Java Virtual Machine Specification</a>
    557     */
    558    public static final byte CONSTANT_Utf8 = 1;
    559
    560    /*
    561     * The description of the constant pool is at: https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4
    562     * References below are to the individual sections
    563     */
    564
    565    /**
    566     * Marks a constant pool entry as type Integer.
    567     *
    568     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.4"> The Constant Pool in The
    569     *      Java Virtual Machine Specification</a>
    570     */
    571    public static final byte CONSTANT_Integer = 3;
    572
    573    /**
    574     * Marks a constant pool entry as type Float.
    575     *
    576     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.4"> The Constant Pool in The
    577     *      Java Virtual Machine Specification</a>
    578     */
    579    public static final byte CONSTANT_Float = 4;
    580
    581    /**
    582     * Marks a constant pool entry as type Long.
    583     *
    584     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.5"> The Constant Pool in The
    585     *      Java Virtual Machine Specification</a>
    586     */
    587    public static final byte CONSTANT_Long = 5;
    588
    589    /**
    590     * Marks a constant pool entry as type Double.
    591     *
    592     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.5"> The Constant Pool in The
    593     *      Java Virtual Machine Specification</a>
    594     */
    595    public static final byte CONSTANT_Double = 6;
    596
    597    /**
    598     * Marks a constant pool entry as a Class
    599     *
    600     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.1"> The Constant Pool in The
    601     *      Java Virtual Machine Specification</a>
    602     */
    603    public static final byte CONSTANT_Class = 7;
    604
    605    /**
    606     * Marks a constant pool entry as a Field Reference.
    607     *
    608     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.2"> The Constant Pool in The
    609     *      Java Virtual Machine Specification</a>
    610     */
    611    public static final byte CONSTANT_Fieldref = 9;
    612
    613    /**
    614     * Marks a constant pool entry as type String
    615     *
    616     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.3"> The Constant Pool in The
    617     *      Java Virtual Machine Specification</a>
    618     */
    619    public static final byte CONSTANT_String = 8;
    620
    621    /**
    622     * Marks a constant pool entry as a Method Reference.
    623     *
    624     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.2"> The Constant Pool in The
    625     *      Java Virtual Machine Specification</a>
    626     */
    627    public static final byte CONSTANT_Methodref = 10;
    628
    629    /**
    630     * Marks a constant pool entry as an Interface Method Reference.
    631     *
    632     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.2"> The Constant Pool in The
    633     *      Java Virtual Machine Specification</a>
    634     */
    635    public static final byte CONSTANT_InterfaceMethodref = 11;
    636
    637    /**
    638     * Marks a constant pool entry as a name and type.
    639     *
    640     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.6"> The Constant Pool in The
    641     *      Java Virtual Machine Specification</a>
    642     */
    643    public static final byte CONSTANT_NameAndType = 12;
    644
    645    /**
    646     * Marks a constant pool entry as a Method Handle.
    647     *
    648     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.8"> The Constant Pool in The
    649     *      Java Virtual Machine Specification</a>
    650     */
    651    public static final byte CONSTANT_MethodHandle = 15;
    652
    653    /**
    654     * Marks a constant pool entry as a Method Type.
    655     *
    656     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.9"> The Constant Pool in The
    657     *      Java Virtual Machine Specification</a>
    658     */
    659    public static final byte CONSTANT_MethodType = 16;
    660
    661    /**
    662     * Marks a constant pool entry as dynamically computed.
    663     *
    664     * @see <a href="https://bugs.openjdk.java.net/secure/attachment/74618/constant-dynamic.html"> Change request for JEP
    665     *      309</a>
    666     * @since 6.3
    667     */
    668    public static final byte CONSTANT_Dynamic = 17;
    669
    670    /**
    671     * Marks a constant pool entry as an Invoke Dynamic
    672     *
    673     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.10"> The Constant Pool in The
    674     *      Java Virtual Machine Specification</a>
    675     */
    676    public static final byte CONSTANT_InvokeDynamic = 18;
    677
    678    /**
    679     * Marks a constant pool entry as a Module Reference.
    680     *
    681     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.4.11"> The Constant Pool in The
    682     *      Java Virtual Machine Specification</a>
    683     * @since 6.1
    684     */
    685    public static final byte CONSTANT_Module = 19;
    686
    687    /**
    688     * Marks a constant pool entry as a Package Reference.
    689     *
    690     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.4.12"> The Constant Pool in The
    691     *      Java Virtual Machine Specification</a>
    692     * @since 6.1
    693     */
    694    public static final byte CONSTANT_Package = 20;
    695
    696    /**
    697     * The names of the types of entries in a constant pool. Use getConstantName instead
    698     */
    699    private static final String[] CONSTANT_NAMES = {"", "CONSTANT_Utf8", "", "CONSTANT_Integer", "CONSTANT_Float", "CONSTANT_Long", "CONSTANT_Double",
    700        "CONSTANT_Class", "CONSTANT_String", "CONSTANT_Fieldref", "CONSTANT_Methodref", "CONSTANT_InterfaceMethodref", "CONSTANT_NameAndType", "", "",
    701        "CONSTANT_MethodHandle", "CONSTANT_MethodType", "CONSTANT_Dynamic", "CONSTANT_InvokeDynamic", "CONSTANT_Module", "CONSTANT_Package"};
    702
    703    /**
    704     * The name of the static initializer, also called &quot;class initialization method&quot; or &quot;interface
    705     * initialization method&quot;. This is &quot;&lt;clinit&gt;&quot;.
    706     */
    707    public static final String STATIC_INITIALIZER_NAME = "<clinit>";
    708
    709    /**
    710     * The name of every constructor method in a class, also called &quot;instance initialization method&quot;. This is
    711     * &quot;&lt;init&gt;&quot;.
    712     */
    713    public static final String CONSTRUCTOR_NAME = "<init>";
    714
    715    /**
    716     * The names of the interfaces implemented by arrays
    717     */
    718    private static final String[] INTERFACES_IMPLEMENTED_BY_ARRAYS = {"java.lang.Cloneable", "java.io.Serializable"};
    719
    720    /**
    721     * Maximum Constant Pool entries. One of the limitations of the Java Virtual Machine.
    722     *
    723     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.11-100-A"> The Java Virtual
    724     *      Machine Specification, Java SE 8 Edition, page 330, chapter 4.11.</a>
    725     */
    726    public static final int MAX_CP_ENTRIES = 65535;
    727
    728    /**
    729     * Maximum code size (plus one; the code size must be LESS than this) One of the limitations of the Java Virtual
    730     * Machine. Note vmspec2 page 152 ("Limitations") says: "The amount of code per non-native, non-abstract method is
    731     * limited to 65536 bytes by the sizes of the indices in the exception_table of the Code attribute (§4.7.3), in the
    732     * LineNumberTable attribute (§4.7.8), and in the LocalVariableTable attribute (§4.7.9)." However this should be taken
    733     * as an upper limit rather than the defined maximum. On page 134 (4.8.1 Static Constants) of the same spec, it says:
    734     * "The value of the code_length item must be less than 65536." The entry in the Limitations section has been removed
    735     * from later versions of the spec; it is not present in the Java SE 8 edition.
    736     *
    737     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.3-300-E"> The Java Virtual
    738     *      Machine Specification, Java SE 8 Edition, page 104, chapter 4.7.</a>
    739     */
    740    public static final int MAX_CODE_SIZE = 65536; // bytes
    741
    742    /**
    743     * The maximum number of dimensions in an array ({@value}). One of the limitations of the Java Virtual Machine.
    744     *
    745     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.3.2-150"> Field Descriptors in
    746     *      The Java Virtual Machine Specification</a>
    747     */
    748    public static final int MAX_ARRAY_DIMENSIONS = 255;
    749
    750    /**
    751     * Java VM opcode.
    752     *
    753     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.nop"> Opcode definitions in The
    754     *      Java Virtual Machine Specification</a>
    755     */
    756    public static final short NOP = 0;
    757
    758    /**
    759     * Java VM opcode.
    760     *
    761     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aconst_null"> Opcode
    762     *      definitions in The Java Virtual Machine Specification</a>
    763     */
    764    public static final short ACONST_NULL = 1;
    765
    766    /**
    767     * Java VM opcode.
    768     *
    769     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> Opcode definitions
    770     *      in The Java Virtual Machine Specification</a>
    771     */
    772    public static final short ICONST_M1 = 2;
    773
    774    /**
    775     * Java VM opcode.
    776     *
    777     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> Opcode definitions
    778     *      in The Java Virtual Machine Specification</a>
    779     */
    780    public static final short ICONST_0 = 3;
    781
    782    /**
    783     * Java VM opcode.
    784     *
    785     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> Opcode definitions
    786     *      in The Java Virtual Machine Specification</a>
    787     */
    788    public static final short ICONST_1 = 4;
    789
    790    /**
    791     * Java VM opcode.
    792     *
    793     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> Opcode definitions
    794     *      in The Java Virtual Machine Specification</a>
    795     */
    796    public static final short ICONST_2 = 5;
    797
    798    /**
    799     * Java VM opcode.
    800     *
    801     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> Opcode definitions
    802     *      in The Java Virtual Machine Specification</a>
    803     */
    804    public static final short ICONST_3 = 6;
    805
    806    /**
    807     * Java VM opcode.
    808     *
    809     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> Opcode definitions
    810     *      in The Java Virtual Machine Specification</a>
    811     */
    812    public static final short ICONST_4 = 7;
    813
    814    /**
    815     * Java VM opcode.
    816     *
    817     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> Opcode definitions
    818     *      in The Java Virtual Machine Specification</a>
    819     */
    820    public static final short ICONST_5 = 8;
    821
    822    /**
    823     * Java VM opcode.
    824     *
    825     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lconst_l"> Opcode definitions
    826     *      in The Java Virtual Machine Specification</a>
    827     */
    828    public static final short LCONST_0 = 9;
    829
    830    /**
    831     * Java VM opcode.
    832     *
    833     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lconst_l"> Opcode definitions
    834     *      in The Java Virtual Machine Specification</a>
    835     */
    836    public static final short LCONST_1 = 10;
    837
    838    /**
    839     * Java VM opcode.
    840     *
    841     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fconst_f"> Opcode definitions
    842     *      in The Java Virtual Machine Specification</a>
    843     */
    844    public static final short FCONST_0 = 11;
    845
    846    /**
    847     * Java VM opcode.
    848     *
    849     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fconst_f"> Opcode definitions
    850     *      in The Java Virtual Machine Specification</a>
    851     */
    852    public static final short FCONST_1 = 12;
    853
    854    /**
    855     * Java VM opcode.
    856     *
    857     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fconst_f"> Opcode definitions
    858     *      in The Java Virtual Machine Specification</a>
    859     */
    860    public static final short FCONST_2 = 13;
    861
    862    /**
    863     * Java VM opcode.
    864     *
    865     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dconst_d"> Opcode definitions
    866     *      in The Java Virtual Machine Specification</a>
    867     */
    868    public static final short DCONST_0 = 14;
    869
    870    /**
    871     * Java VM opcode.
    872     *
    873     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dconst_d"> Opcode definitions
    874     *      in The Java Virtual Machine Specification</a>
    875     */
    876    public static final short DCONST_1 = 15;
    877
    878    /**
    879     * Java VM opcode.
    880     *
    881     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.bipush"> Opcode definitions in
    882     *      The Java Virtual Machine Specification</a>
    883     */
    884    public static final short BIPUSH = 16;
    885
    886    /**
    887     * Java VM opcode.
    888     *
    889     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.sipush"> Opcode definitions in
    890     *      The Java Virtual Machine Specification</a>
    891     */
    892    public static final short SIPUSH = 17;
    893
    894    /**
    895     * Java VM opcode.
    896     *
    897     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldc"> Opcode definitions in The
    898     *      Java Virtual Machine Specification</a>
    899     */
    900    public static final short LDC = 18;
    901
    902    /**
    903     * Java VM opcode.
    904     *
    905     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldc_w"> Opcode definitions in
    906     *      The Java Virtual Machine Specification</a>
    907     */
    908    public static final short LDC_W = 19;
    909
    910    /**
    911     * Java VM opcode.
    912     *
    913     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldc2_w"> Opcode definitions in
    914     *      The Java Virtual Machine Specification</a>
    915     */
    916    public static final short LDC2_W = 20;
    917
    918    /**
    919     * Java VM opcode.
    920     *
    921     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload"> Opcode definitions in
    922     *      The Java Virtual Machine Specification</a>
    923     */
    924    public static final short ILOAD = 21;
    925
    926    /**
    927     * Java VM opcode.
    928     *
    929     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload"> Opcode definitions in
    930     *      The Java Virtual Machine Specification</a>
    931     */
    932    public static final short LLOAD = 22;
    933
    934    /**
    935     * Java VM opcode.
    936     *
    937     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload"> Opcode definitions in
    938     *      The Java Virtual Machine Specification</a>
    939     */
    940    public static final short FLOAD = 23;
    941
    942    /**
    943     * Java VM opcode.
    944     *
    945     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload"> Opcode definitions in
    946     *      The Java Virtual Machine Specification</a>
    947     */
    948    public static final short DLOAD = 24;
    949
    950    /**
    951     * Java VM opcode.
    952     *
    953     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload"> Opcode definitions in
    954     *      The Java Virtual Machine Specification</a>
    955     */
    956    public static final short ALOAD = 25;
    957
    958    /**
    959     * Java VM opcode.
    960     *
    961     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n"> Opcode definitions in
    962     *      The Java Virtual Machine Specification</a>
    963     */
    964    public static final short ILOAD_0 = 26;
    965
    966    /**
    967     * Java VM opcode.
    968     *
    969     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n"> Opcode definitions in
    970     *      The Java Virtual Machine Specification</a>
    971     */
    972    public static final short ILOAD_1 = 27;
    973
    974    /**
    975     * Java VM opcode.
    976     *
    977     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n"> Opcode definitions in
    978     *      The Java Virtual Machine Specification</a>
    979     */
    980    public static final short ILOAD_2 = 28;
    981
    982    /**
    983     * Java VM opcode.
    984     *
    985     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n"> Opcode definitions in
    986     *      The Java Virtual Machine Specification</a>
    987     */
    988    public static final short ILOAD_3 = 29;
    989
    990    /**
    991     * Java VM opcode.
    992     *
    993     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n"> Opcode definitions in
    994     *      The Java Virtual Machine Specification</a>
    995     */
    996    public static final short LLOAD_0 = 30;
    997
    998    /**
    999     * Java VM opcode.
    1000     *
    1001     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n"> Opcode definitions in
    1002     *      The Java Virtual Machine Specification</a>
    1003     */
    1004    public static final short LLOAD_1 = 31;
    1005
    1006    /**
    1007     * Java VM opcode.
    1008     *
    1009     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n"> Opcode definitions in
    1010     *      The Java Virtual Machine Specification</a>
    1011     */
    1012    public static final short LLOAD_2 = 32;
    1013
    1014    /**
    1015     * Java VM opcode.
    1016     *
    1017     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n"> Opcode definitions in
    1018     *      The Java Virtual Machine Specification</a>
    1019     */
    1020    public static final short LLOAD_3 = 33;
    1021
    1022    /**
    1023     * Java VM opcode.
    1024     *
    1025     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n"> Opcode definitions in
    1026     *      The Java Virtual Machine Specification</a>
    1027     */
    1028    public static final short FLOAD_0 = 34;
    1029
    1030    /**
    1031     * Java VM opcode.
    1032     *
    1033     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n"> Opcode definitions in
    1034     *      The Java Virtual Machine Specification</a>
    1035     */
    1036    public static final short FLOAD_1 = 35;
    1037
    1038    /**
    1039     * Java VM opcode.
    1040     *
    1041     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n"> Opcode definitions in
    1042     *      The Java Virtual Machine Specification</a>
    1043     */
    1044    public static final short FLOAD_2 = 36;
    1045
    1046    /**
    1047     * Java VM opcode.
    1048     *
    1049     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n"> Opcode definitions in
    1050     *      The Java Virtual Machine Specification</a>
    1051     */
    1052    public static final short FLOAD_3 = 37;
    1053
    1054    /**
    1055     * Java VM opcode.
    1056     *
    1057     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n"> Opcode definitions in
    1058     *      The Java Virtual Machine Specification</a>
    1059     */
    1060    public static final short DLOAD_0 = 38;
    1061
    1062    /**
    1063     * Java VM opcode.
    1064     *
    1065     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n"> Opcode definitions in
    1066     *      The Java Virtual Machine Specification</a>
    1067     */
    1068    public static final short DLOAD_1 = 39;
    1069
    1070    /**
    1071     * Java VM opcode.
    1072     *
    1073     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n"> Opcode definitions in
    1074     *      The Java Virtual Machine Specification</a>
    1075     */
    1076    public static final short DLOAD_2 = 40;
    1077
    1078    /**
    1079     * Java VM opcode.
    1080     *
    1081     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n"> Opcode definitions in
    1082     *      The Java Virtual Machine Specification</a>
    1083     */
    1084    public static final short DLOAD_3 = 41;
    1085
    1086    /**
    1087     * Java VM opcode.
    1088     *
    1089     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n"> Opcode definitions in
    1090     *      The Java Virtual Machine Specification</a>
    1091     */
    1092    public static final short ALOAD_0 = 42;
    1093
    1094    /**
    1095     * Java VM opcode.
    1096     *
    1097     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n"> Opcode definitions in
    1098     *      The Java Virtual Machine Specification</a>
    1099     */
    1100    public static final short ALOAD_1 = 43;
    1101
    1102    /**
    1103     * Java VM opcode.
    1104     *
    1105     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n"> Opcode definitions in
    1106     *      The Java Virtual Machine Specification</a>
    1107     */
    1108    public static final short ALOAD_2 = 44;
    1109
    1110    /**
    1111     * Java VM opcode.
    1112     *
    1113     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n"> Opcode definitions in
    1114     *      The Java Virtual Machine Specification</a>
    1115     */
    1116    public static final short ALOAD_3 = 45;
    1117
    1118    /**
    1119     * Java VM opcode.
    1120     *
    1121     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iaload"> Opcode definitions in
    1122     *      The Java Virtual Machine Specification</a>
    1123     */
    1124    public static final short IALOAD = 46;
    1125
    1126    /**
    1127     * Java VM opcode.
    1128     *
    1129     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.laload"> Opcode definitions in
    1130     *      The Java Virtual Machine Specification</a>
    1131     */
    1132    public static final short LALOAD = 47;
    1133
    1134    /**
    1135     * Java VM opcode.
    1136     *
    1137     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.faload"> Opcode definitions in
    1138     *      The Java Virtual Machine Specification</a>
    1139     */
    1140    public static final short FALOAD = 48;
    1141
    1142    /**
    1143     * Java VM opcode.
    1144     *
    1145     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.daload"> Opcode definitions in
    1146     *      The Java Virtual Machine Specification</a>
    1147     */
    1148    public static final short DALOAD = 49;
    1149
    1150    /**
    1151     * Java VM opcode.
    1152     *
    1153     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aaload"> Opcode definitions in
    1154     *      The Java Virtual Machine Specification</a>
    1155     */
    1156    public static final short AALOAD = 50;
    1157
    1158    /**
    1159     * Java VM opcode.
    1160     *
    1161     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.baload"> Opcode definitions in
    1162     *      The Java Virtual Machine Specification</a>
    1163     */
    1164    public static final short BALOAD = 51;
    1165
    1166    /**
    1167     * Java VM opcode.
    1168     *
    1169     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.caload"> Opcode definitions in
    1170     *      The Java Virtual Machine Specification</a>
    1171     */
    1172    public static final short CALOAD = 52;
    1173
    1174    /**
    1175     * Java VM opcode.
    1176     *
    1177     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.saload"> Opcode definitions in
    1178     *      The Java Virtual Machine Specification</a>
    1179     */
    1180    public static final short SALOAD = 53;
    1181
    1182    /**
    1183     * Java VM opcode.
    1184     *
    1185     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore"> Opcode definitions in
    1186     *      The Java Virtual Machine Specification</a>
    1187     */
    1188    public static final short ISTORE = 54;
    1189
    1190    /**
    1191     * Java VM opcode.
    1192     *
    1193     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore"> Opcode definitions in
    1194     *      The Java Virtual Machine Specification</a>
    1195     */
    1196    public static final short LSTORE = 55;
    1197
    1198    /**
    1199     * Java VM opcode.
    1200     *
    1201     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore"> Opcode definitions in
    1202     *      The Java Virtual Machine Specification</a>
    1203     */
    1204    public static final short FSTORE = 56;
    1205
    1206    /**
    1207     * Java VM opcode.
    1208     *
    1209     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore"> Opcode definitions in
    1210     *      The Java Virtual Machine Specification</a>
    1211     */
    1212    public static final short DSTORE = 57;
    1213
    1214    /**
    1215     * Java VM opcode.
    1216     *
    1217     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore"> Opcode definitions in
    1218     *      The Java Virtual Machine Specification</a>
    1219     */
    1220    public static final short ASTORE = 58;
    1221
    1222    /**
    1223     * Java VM opcode.
    1224     *
    1225     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n"> Opcode definitions
    1226     *      in The Java Virtual Machine Specification</a>
    1227     */
    1228    public static final short ISTORE_0 = 59;
    1229
    1230    /**
    1231     * Java VM opcode.
    1232     *
    1233     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n"> Opcode definitions
    1234     *      in The Java Virtual Machine Specification</a>
    1235     */
    1236    public static final short ISTORE_1 = 60;
    1237
    1238    /**
    1239     * Java VM opcode.
    1240     *
    1241     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n"> Opcode definitions
    1242     *      in The Java Virtual Machine Specification</a>
    1243     */
    1244    public static final short ISTORE_2 = 61;
    1245
    1246    /**
    1247     * Java VM opcode.
    1248     *
    1249     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n"> Opcode definitions
    1250     *      in The Java Virtual Machine Specification</a>
    1251     */
    1252    public static final short ISTORE_3 = 62;
    1253
    1254    /**
    1255     * Java VM opcode.
    1256     *
    1257     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n"> Opcode definitions
    1258     *      in The Java Virtual Machine Specification</a>
    1259     */
    1260    public static final short LSTORE_0 = 63;
    1261
    1262    /**
    1263     * Java VM opcode.
    1264     *
    1265     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n"> Opcode definitions
    1266     *      in The Java Virtual Machine Specification</a>
    1267     */
    1268    public static final short LSTORE_1 = 64;
    1269
    1270    /**
    1271     * Java VM opcode.
    1272     *
    1273     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n"> Opcode definitions
    1274     *      in The Java Virtual Machine Specification</a>
    1275     */
    1276    public static final short LSTORE_2 = 65;
    1277
    1278    /**
    1279     * Java VM opcode.
    1280     *
    1281     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n"> Opcode definitions
    1282     *      in The Java Virtual Machine Specification</a>
    1283     */
    1284    public static final short LSTORE_3 = 66;
    1285
    1286    /**
    1287     * Java VM opcode.
    1288     *
    1289     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n"> Opcode definitions
    1290     *      in The Java Virtual Machine Specification</a>
    1291     */
    1292    public static final short FSTORE_0 = 67;
    1293
    1294    /**
    1295     * Java VM opcode.
    1296     *
    1297     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n"> Opcode definitions
    1298     *      in The Java Virtual Machine Specification</a>
    1299     */
    1300    public static final short FSTORE_1 = 68;
    1301
    1302    /**
    1303     * Java VM opcode.
    1304     *
    1305     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n"> Opcode definitions
    1306     *      in The Java Virtual Machine Specification</a>
    1307     */
    1308    public static final short FSTORE_2 = 69;
    1309
    1310    /**
    1311     * Java VM opcode.
    1312     *
    1313     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n"> Opcode definitions
    1314     *      in The Java Virtual Machine Specification</a>
    1315     */
    1316    public static final short FSTORE_3 = 70;
    1317
    1318    /**
    1319     * Java VM opcode.
    1320     *
    1321     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n"> Opcode definitions
    1322     *      in The Java Virtual Machine Specification</a>
    1323     */
    1324    public static final short DSTORE_0 = 71;
    1325
    1326    /**
    1327     * Java VM opcode.
    1328     *
    1329     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n"> Opcode definitions
    1330     *      in The Java Virtual Machine Specification</a>
    1331     */
    1332    public static final short DSTORE_1 = 72;
    1333
    1334    /**
    1335     * Java VM opcode.
    1336     *
    1337     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n"> Opcode definitions
    1338     *      in The Java Virtual Machine Specification</a>
    1339     */
    1340    public static final short DSTORE_2 = 73;
    1341
    1342    /**
    1343     * Java VM opcode.
    1344     *
    1345     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n"> Opcode definitions
    1346     *      in The Java Virtual Machine Specification</a>
    1347     */
    1348    public static final short DSTORE_3 = 74;
    1349
    1350    /**
    1351     * Java VM opcode.
    1352     *
    1353     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n"> Opcode definitions
    1354     *      in The Java Virtual Machine Specification</a>
    1355     */
    1356    public static final short ASTORE_0 = 75;
    1357
    1358    /**
    1359     * Java VM opcode.
    1360     *
    1361     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n"> Opcode definitions
    1362     *      in The Java Virtual Machine Specification</a>
    1363     */
    1364    public static final short ASTORE_1 = 76;
    1365
    1366    /**
    1367     * Java VM opcode.
    1368     *
    1369     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n"> Opcode definitions
    1370     *      in The Java Virtual Machine Specification</a>
    1371     */
    1372    public static final short ASTORE_2 = 77;
    1373
    1374    /**
    1375     * Java VM opcode.
    1376     *
    1377     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n"> Opcode definitions
    1378     *      in The Java Virtual Machine Specification</a>
    1379     */
    1380    public static final short ASTORE_3 = 78;
    1381
    1382    /**
    1383     * Java VM opcode.
    1384     *
    1385     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iastore"> Opcode definitions in
    1386     *      The Java Virtual Machine Specification</a>
    1387     */
    1388    public static final short IASTORE = 79;
    1389
    1390    /**
    1391     * Java VM opcode.
    1392     *
    1393     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lastore"> Opcode definitions in
    1394     *      The Java Virtual Machine Specification</a>
    1395     */
    1396    public static final short LASTORE = 80;
    1397
    1398    /**
    1399     * Java VM opcode.
    1400     *
    1401     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fastore"> Opcode definitions in
    1402     *      The Java Virtual Machine Specification</a>
    1403     */
    1404    public static final short FASTORE = 81;
    1405
    1406    /**
    1407     * Java VM opcode.
    1408     *
    1409     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dastore"> Opcode definitions in
    1410     *      The Java Virtual Machine Specification</a>
    1411     */
    1412    public static final short DASTORE = 82;
    1413
    1414    /**
    1415     * Java VM opcode.
    1416     *
    1417     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aastore"> Opcode definitions in
    1418     *      The Java Virtual Machine Specification</a>
    1419     */
    1420    public static final short AASTORE = 83;
    1421
    1422    /**
    1423     * Java VM opcode.
    1424     *
    1425     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.bastore"> Opcode definitions in
    1426     *      The Java Virtual Machine Specification</a>
    1427     */
    1428    public static final short BASTORE = 84;
    1429
    1430    /**
    1431     * Java VM opcode.
    1432     *
    1433     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.castore"> Opcode definitions in
    1434     *      The Java Virtual Machine Specification</a>
    1435     */
    1436    public static final short CASTORE = 85;
    1437
    1438    /**
    1439     * Java VM opcode.
    1440     *
    1441     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.sastore"> Opcode definitions in
    1442     *      The Java Virtual Machine Specification</a>
    1443     */
    1444    public static final short SASTORE = 86;
    1445
    1446    /**
    1447     * Java VM opcode.
    1448     *
    1449     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.pop"> Opcode definitions in The
    1450     *      Java Virtual Machine Specification</a>
    1451     */
    1452    public static final short POP = 87;
    1453
    1454    /**
    1455     * Java VM opcode.
    1456     *
    1457     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.pop2"> Opcode definitions in
    1458     *      The Java Virtual Machine Specification</a>
    1459     */
    1460    public static final short POP2 = 88;
    1461
    1462    /**
    1463     * Java VM opcode.
    1464     *
    1465     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup"> Opcode definitions in The
    1466     *      Java Virtual Machine Specification</a>
    1467     */
    1468    public static final short DUP = 89;
    1469
    1470    /**
    1471     * Java VM opcode.
    1472     *
    1473     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup_x1"> Opcode definitions in
    1474     *      The Java Virtual Machine Specification</a>
    1475     */
    1476    public static final short DUP_X1 = 90;
    1477
    1478    /**
    1479     * Java VM opcode.
    1480     *
    1481     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup_x2"> Opcode definitions in
    1482     *      The Java Virtual Machine Specification</a>
    1483     */
    1484    public static final short DUP_X2 = 91;
    1485
    1486    /**
    1487     * Java VM opcode.
    1488     *
    1489     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup2"> Opcode definitions in
    1490     *      The Java Virtual Machine Specification</a>
    1491     */
    1492    public static final short DUP2 = 92;
    1493
    1494    /**
    1495     * Java VM opcode.
    1496     *
    1497     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup2_x1"> Opcode definitions in
    1498     *      The Java Virtual Machine Specification</a>
    1499     */
    1500    public static final short DUP2_X1 = 93;
    1501
    1502    /**
    1503     * Java VM opcode.
    1504     *
    1505     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup2_x2"> Opcode definitions in
    1506     *      The Java Virtual Machine Specification</a>
    1507     */
    1508    public static final short DUP2_X2 = 94;
    1509
    1510    /**
    1511     * Java VM opcode.
    1512     *
    1513     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.swap"> Opcode definitions in
    1514     *      The Java Virtual Machine Specification</a>
    1515     */
    1516    public static final short SWAP = 95;
    1517
    1518    /**
    1519     * Java VM opcode.
    1520     *
    1521     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iadd"> Opcode definitions in
    1522     *      The Java Virtual Machine Specification</a>
    1523     */
    1524    public static final short IADD = 96;
    1525
    1526    /**
    1527     * Java VM opcode.
    1528     *
    1529     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ladd"> Opcode definitions in
    1530     *      The Java Virtual Machine Specification</a>
    1531     */
    1532    public static final short LADD = 97;
    1533
    1534    /**
    1535     * Java VM opcode.
    1536     *
    1537     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fadd"> Opcode definitions in
    1538     *      The Java Virtual Machine Specification</a>
    1539     */
    1540    public static final short FADD = 98;
    1541
    1542    /**
    1543     * Java VM opcode.
    1544     *
    1545     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dadd"> Opcode definitions in
    1546     *      The Java Virtual Machine Specification</a>
    1547     */
    1548    public static final short DADD = 99;
    1549
    1550    /**
    1551     * Java VM opcode.
    1552     *
    1553     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.isub"> Opcode definitions in
    1554     *      The Java Virtual Machine Specification</a>
    1555     */
    1556    public static final short ISUB = 100;
    1557
    1558    /**
    1559     * Java VM opcode.
    1560     *
    1561     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lsub"> Opcode definitions in
    1562     *      The Java Virtual Machine Specification</a>
    1563     */
    1564    public static final short LSUB = 101;
    1565
    1566    /**
    1567     * Java VM opcode.
    1568     *
    1569     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fsub"> Opcode definitions in
    1570     *      The Java Virtual Machine Specification</a>
    1571     */
    1572    public static final short FSUB = 102;
    1573
    1574    /**
    1575     * Java VM opcode.
    1576     *
    1577     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dsub"> Opcode definitions in
    1578     *      The Java Virtual Machine Specification</a>
    1579     */
    1580    public static final short DSUB = 103;
    1581
    1582    /**
    1583     * Java VM opcode.
    1584     *
    1585     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.imul"> Opcode definitions in
    1586     *      The Java Virtual Machine Specification</a>
    1587     */
    1588    public static final short IMUL = 104;
    1589
    1590    /**
    1591     * Java VM opcode.
    1592     *
    1593     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lmul"> Opcode definitions in
    1594     *      The Java Virtual Machine Specification</a>
    1595     */
    1596    public static final short LMUL = 105;
    1597
    1598    /**
    1599     * Java VM opcode.
    1600     *
    1601     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fmul"> Opcode definitions in
    1602     *      The Java Virtual Machine Specification</a>
    1603     */
    1604    public static final short FMUL = 106;
    1605
    1606    /**
    1607     * Java VM opcode.
    1608     *
    1609     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dmul"> Opcode definitions in
    1610     *      The Java Virtual Machine Specification</a>
    1611     */
    1612    public static final short DMUL = 107;
    1613
    1614    /**
    1615     * Java VM opcode.
    1616     *
    1617     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.idiv"> Opcode definitions in
    1618     *      The Java Virtual Machine Specification</a>
    1619     */
    1620    public static final short IDIV = 108;
    1621
    1622    /**
    1623     * Java VM opcode.
    1624     *
    1625     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldiv"> Opcode definitions in
    1626     *      The Java Virtual Machine Specification</a>
    1627     */
    1628    public static final short LDIV = 109;
    1629
    1630    /**
    1631     * Java VM opcode.
    1632     *
    1633     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fdiv"> Opcode definitions in
    1634     *      The Java Virtual Machine Specification</a>
    1635     */
    1636    public static final short FDIV = 110;
    1637
    1638    /**
    1639     * Java VM opcode.
    1640     *
    1641     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ddiv"> Opcode definitions in
    1642     *      The Java Virtual Machine Specification</a>
    1643     */
    1644    public static final short DDIV = 111;
    1645
    1646    /**
    1647     * Java VM opcode.
    1648     *
    1649     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.irem"> Opcode definitions in
    1650     *      The Java Virtual Machine Specification</a>
    1651     */
    1652    public static final short IREM = 112;
    1653
    1654    /**
    1655     * Java VM opcode.
    1656     *
    1657     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lrem"> Opcode definitions in
    1658     *      The Java Virtual Machine Specification</a>
    1659     */
    1660    public static final short LREM = 113;
    1661
    1662    /**
    1663     * Java VM opcode.
    1664     *
    1665     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.frem"> Opcode definitions in
    1666     *      The Java Virtual Machine Specification</a>
    1667     */
    1668    public static final short FREM = 114;
    1669
    1670    /**
    1671     * Java VM opcode.
    1672     *
    1673     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.drem"> Opcode definitions in
    1674     *      The Java Virtual Machine Specification</a>
    1675     */
    1676    public static final short DREM = 115;
    1677
    1678    /**
    1679     * Java VM opcode.
    1680     *
    1681     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ineg"> Opcode definitions in
    1682     *      The Java Virtual Machine Specification</a>
    1683     */
    1684    public static final short INEG = 116;
    1685
    1686    /**
    1687     * Java VM opcode.
    1688     *
    1689     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lneg"> Opcode definitions in
    1690     *      The Java Virtual Machine Specification</a>
    1691     */
    1692    public static final short LNEG = 117;
    1693
    1694    /**
    1695     * Java VM opcode.
    1696     *
    1697     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fneg"> Opcode definitions in
    1698     *      The Java Virtual Machine Specification</a>
    1699     */
    1700    public static final short FNEG = 118;
    1701
    1702    /**
    1703     * Java VM opcode.
    1704     *
    1705     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dneg"> Opcode definitions in
    1706     *      The Java Virtual Machine Specification</a>
    1707     */
    1708    public static final short DNEG = 119;
    1709
    1710    /**
    1711     * Java VM opcode.
    1712     *
    1713     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ishl"> Opcode definitions in
    1714     *      The Java Virtual Machine Specification</a>
    1715     */
    1716    public static final short ISHL = 120;
    1717
    1718    /**
    1719     * Java VM opcode.
    1720     *
    1721     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lshl"> Opcode definitions in
    1722     *      The Java Virtual Machine Specification</a>
    1723     */
    1724    public static final short LSHL = 121;
    1725
    1726    /**
    1727     * Java VM opcode.
    1728     *
    1729     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ishr"> Opcode definitions in
    1730     *      The Java Virtual Machine Specification</a>
    1731     */
    1732    public static final short ISHR = 122;
    1733
    1734    /**
    1735     * Java VM opcode.
    1736     *
    1737     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lshr"> Opcode definitions in
    1738     *      The Java Virtual Machine Specification</a>
    1739     */
    1740    public static final short LSHR = 123;
    1741
    1742    /**
    1743     * Java VM opcode.
    1744     *
    1745     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iushr"> Opcode definitions in
    1746     *      The Java Virtual Machine Specification</a>
    1747     */
    1748    public static final short IUSHR = 124;
    1749
    1750    /**
    1751     * Java VM opcode.
    1752     *
    1753     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lushr"> Opcode definitions in
    1754     *      The Java Virtual Machine Specification</a>
    1755     */
    1756    public static final short LUSHR = 125;
    1757
    1758    /**
    1759     * Java VM opcode.
    1760     *
    1761     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iand"> Opcode definitions in
    1762     *      The Java Virtual Machine Specification</a>
    1763     */
    1764    public static final short IAND = 126;
    1765
    1766    /**
    1767     * Java VM opcode.
    1768     *
    1769     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.land"> Opcode definitions in
    1770     *      The Java Virtual Machine Specification</a>
    1771     */
    1772    public static final short LAND = 127;
    1773
    1774    /**
    1775     * Java VM opcode.
    1776     *
    1777     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ior"> Opcode definitions in The
    1778     *      Java Virtual Machine Specification</a>
    1779     */
    1780    public static final short IOR = 128;
    1781
    1782    /**
    1783     * Java VM opcode.
    1784     *
    1785     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lor"> Opcode definitions in The
    1786     *      Java Virtual Machine Specification</a>
    1787     */
    1788    public static final short LOR = 129;
    1789
    1790    /**
    1791     * Java VM opcode.
    1792     *
    1793     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ixor"> Opcode definitions in
    1794     *      The Java Virtual Machine Specification</a>
    1795     */
    1796    public static final short IXOR = 130;
    1797
    1798    /**
    1799     * Java VM opcode.
    1800     *
    1801     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lxor"> Opcode definitions in
    1802     *      The Java Virtual Machine Specification</a>
    1803     */
    1804    public static final short LXOR = 131;
    1805
    1806    /**
    1807     * Java VM opcode.
    1808     *
    1809     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iinc"> Opcode definitions in
    1810     *      The Java Virtual Machine Specification</a>
    1811     */
    1812    public static final short IINC = 132;
    1813
    1814    /**
    1815     * Java VM opcode.
    1816     *
    1817     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2l"> Opcode definitions in The
    1818     *      Java Virtual Machine Specification</a>
    1819     */
    1820    public static final short I2L = 133;
    1821
    1822    /**
    1823     * Java VM opcode.
    1824     *
    1825     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2f"> Opcode definitions in The
    1826     *      Java Virtual Machine Specification</a>
    1827     */
    1828    public static final short I2F = 134;
    1829
    1830    /**
    1831     * Java VM opcode.
    1832     *
    1833     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2d"> Opcode definitions in The
    1834     *      Java Virtual Machine Specification</a>
    1835     */
    1836    public static final short I2D = 135;
    1837
    1838    /**
    1839     * Java VM opcode.
    1840     *
    1841     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.l2i"> Opcode definitions in The
    1842     *      Java Virtual Machine Specification</a>
    1843     */
    1844    public static final short L2I = 136;
    1845
    1846    /**
    1847     * Java VM opcode.
    1848     *
    1849     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.l2f"> Opcode definitions in The
    1850     *      Java Virtual Machine Specification</a>
    1851     */
    1852    public static final short L2F = 137;
    1853
    1854    /**
    1855     * Java VM opcode.
    1856     *
    1857     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.l2d"> Opcode definitions in The
    1858     *      Java Virtual Machine Specification</a>
    1859     */
    1860    public static final short L2D = 138;
    1861
    1862    /**
    1863     * Java VM opcode.
    1864     *
    1865     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.f2i"> Opcode definitions in The
    1866     *      Java Virtual Machine Specification</a>
    1867     */
    1868    public static final short F2I = 139;
    1869
    1870    /**
    1871     * Java VM opcode.
    1872     *
    1873     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.f2l"> Opcode definitions in The
    1874     *      Java Virtual Machine Specification</a>
    1875     */
    1876    public static final short F2L = 140;
    1877
    1878    /**
    1879     * Java VM opcode.
    1880     *
    1881     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.f2d"> Opcode definitions in The
    1882     *      Java Virtual Machine Specification</a>
    1883     */
    1884    public static final short F2D = 141;
    1885
    1886    /**
    1887     * Java VM opcode.
    1888     *
    1889     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.d2i"> Opcode definitions in The
    1890     *      Java Virtual Machine Specification</a>
    1891     */
    1892    public static final short D2I = 142;
    1893
    1894    /**
    1895     * Java VM opcode.
    1896     *
    1897     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.d2l"> Opcode definitions in The
    1898     *      Java Virtual Machine Specification</a>
    1899     */
    1900    public static final short D2L = 143;
    1901
    1902    /**
    1903     * Java VM opcode.
    1904     *
    1905     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.d2f"> Opcode definitions in The
    1906     *      Java Virtual Machine Specification</a>
    1907     */
    1908    public static final short D2F = 144;
    1909
    1910    /**
    1911     * Java VM opcode.
    1912     *
    1913     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2b"> Opcode definitions in The
    1914     *      Java Virtual Machine Specification</a>
    1915     */
    1916    public static final short I2B = 145;
    1917
    1918    /**
    1919     * Java VM opcode.
    1920     *
    1921     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5"> Opcode definitions in The
    1922     *      Java Virtual Machine Specification</a>
    1923     */
    1924    public static final short INT2BYTE = 145; // Old notation
    1925
    1926    /**
    1927     * Java VM opcode.
    1928     *
    1929     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2c"> Opcode definitions in The
    1930     *      Java Virtual Machine Specification</a>
    1931     */
    1932    public static final short I2C = 146;
    1933
    1934    /**
    1935     * Java VM opcode.
    1936     *
    1937     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5"> Opcode definitions in The
    1938     *      Java Virtual Machine Specification</a>
    1939     */
    1940    public static final short INT2CHAR = 146; // Old notation
    1941
    1942    /**
    1943     * Java VM opcode.
    1944     *
    1945     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2s"> Opcode definitions in The
    1946     *      Java Virtual Machine Specification</a>
    1947     */
    1948    public static final short I2S = 147;
    1949
    1950    /**
    1951     * Java VM opcode.
    1952     *
    1953     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5"> Opcode definitions in The
    1954     *      Java Virtual Machine Specification</a>
    1955     */
    1956    public static final short INT2SHORT = 147; // Old notation
    1957
    1958    /**
    1959     * Java VM opcode.
    1960     *
    1961     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lcmp"> Opcode definitions in
    1962     *      The Java Virtual Machine Specification</a>
    1963     */
    1964    public static final short LCMP = 148;
    1965
    1966    /**
    1967     * Java VM opcode.
    1968     *
    1969     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fcmpl"> Opcode definitions in
    1970     *      The Java Virtual Machine Specification</a>
    1971     */
    1972    public static final short FCMPL = 149;
    1973
    1974    /**
    1975     * Java VM opcode.
    1976     *
    1977     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fcmpg"> Opcode definitions in
    1978     *      The Java Virtual Machine Specification</a>
    1979     */
    1980    public static final short FCMPG = 150;
    1981
    1982    /**
    1983     * Java VM opcode.
    1984     *
    1985     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dcmpl"> Opcode definitions in
    1986     *      The Java Virtual Machine Specification</a>
    1987     */
    1988    public static final short DCMPL = 151;
    1989
    1990    /**
    1991     * Java VM opcode.
    1992     *
    1993     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dcmpg"> Opcode definitions in
    1994     *      The Java Virtual Machine Specification</a>
    1995     */
    1996    public static final short DCMPG = 152;
    1997
    1998    /**
    1999     * Java VM opcode.
    2000     *
    2001     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifeq"> Opcode definitions in
    2002     *      The Java Virtual Machine Specification</a>
    2003     */
    2004    public static final short IFEQ = 153;
    2005
    2006    /**
    2007     * Java VM opcode.
    2008     *
    2009     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifne"> Opcode definitions in
    2010     *      The Java Virtual Machine Specification</a>
    2011     */
    2012    public static final short IFNE = 154;
    2013
    2014    /**
    2015     * Java VM opcode.
    2016     *
    2017     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iflt"> Opcode definitions in
    2018     *      The Java Virtual Machine Specification</a>
    2019     */
    2020    public static final short IFLT = 155;
    2021
    2022    /**
    2023     * Java VM opcode.
    2024     *
    2025     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifge"> Opcode definitions in
    2026     *      The Java Virtual Machine Specification</a>
    2027     */
    2028    public static final short IFGE = 156;
    2029
    2030    /**
    2031     * Java VM opcode.
    2032     *
    2033     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifgt"> Opcode definitions in
    2034     *      The Java Virtual Machine Specification</a>
    2035     */
    2036    public static final short IFGT = 157;
    2037
    2038    /**
    2039     * Java VM opcode.
    2040     *
    2041     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifle"> Opcode definitions in
    2042     *      The Java Virtual Machine Specification</a>
    2043     */
    2044    public static final short IFLE = 158;
    2045
    2046    /**
    2047     * Java VM opcode.
    2048     *
    2049     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> Opcode
    2050     *      definitions in The Java Virtual Machine Specification</a>
    2051     */
    2052    public static final short IF_ICMPEQ = 159;
    2053
    2054    /**
    2055     * Java VM opcode.
    2056     *
    2057     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> Opcode
    2058     *      definitions in The Java Virtual Machine Specification</a>
    2059     */
    2060    public static final short IF_ICMPNE = 160;
    2061
    2062    /**
    2063     * Java VM opcode.
    2064     *
    2065     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> Opcode
    2066     *      definitions in The Java Virtual Machine Specification</a>
    2067     */
    2068    public static final short IF_ICMPLT = 161;
    2069
    2070    /**
    2071     * Java VM opcode.
    2072     *
    2073     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> Opcode
    2074     *      definitions in The Java Virtual Machine Specification</a>
    2075     */
    2076    public static final short IF_ICMPGE = 162;
    2077
    2078    /**
    2079     * Java VM opcode.
    2080     *
    2081     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> Opcode
    2082     *      definitions in The Java Virtual Machine Specification</a>
    2083     */
    2084    public static final short IF_ICMPGT = 163;
    2085
    2086    /**
    2087     * Java VM opcode.
    2088     *
    2089     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> Opcode
    2090     *      definitions in The Java Virtual Machine Specification</a>
    2091     */
    2092    public static final short IF_ICMPLE = 164;
    2093
    2094    /**
    2095     * Java VM opcode.
    2096     *
    2097     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_acmp_cond"> Opcode
    2098     *      definitions in The Java Virtual Machine Specification</a>
    2099     */
    2100    public static final short IF_ACMPEQ = 165;
    2101
    2102    /**
    2103     * Java VM opcode.
    2104     *
    2105     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_acmp_cond"> Opcode
    2106     *      definitions in The Java Virtual Machine Specification</a>
    2107     */
    2108    public static final short IF_ACMPNE = 166;
    2109
    2110    /**
    2111     * Java VM opcode.
    2112     *
    2113     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.goto"> Opcode definitions in
    2114     *      The Java Virtual Machine Specification</a>
    2115     */
    2116    public static final short GOTO = 167;
    2117
    2118    /**
    2119     * Java VM opcode.
    2120     *
    2121     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.jsr"> Opcode definitions in The
    2122     *      Java Virtual Machine Specification</a>
    2123     */
    2124    public static final short JSR = 168;
    2125
    2126    /**
    2127     * Java VM opcode.
    2128     *
    2129     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ret"> Opcode definitions in The
    2130     *      Java Virtual Machine Specification</a>
    2131     */
    2132    public static final short RET = 169;
    2133
    2134    /**
    2135     * Java VM opcode.
    2136     *
    2137     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.tableswitch"> Opcode
    2138     *      definitions in The Java Virtual Machine Specification</a>
    2139     */
    2140    public static final short TABLESWITCH = 170;
    2141
    2142    /**
    2143     * Java VM opcode.
    2144     *
    2145     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lookupswitch"> Opcode
    2146     *      definitions in The Java Virtual Machine Specification</a>
    2147     */
    2148    public static final short LOOKUPSWITCH = 171;
    2149
    2150    /**
    2151     * Java VM opcode.
    2152     *
    2153     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ireturn"> Opcode definitions in
    2154     *      The Java Virtual Machine Specification</a>
    2155     */
    2156    public static final short IRETURN = 172;
    2157
    2158    /**
    2159     * Java VM opcode.
    2160     *
    2161     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lreturn"> Opcode definitions in
    2162     *      The Java Virtual Machine Specification</a>
    2163     */
    2164    public static final short LRETURN = 173;
    2165
    2166    /**
    2167     * Java VM opcode.
    2168     *
    2169     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.freturn"> Opcode definitions in
    2170     *      The Java Virtual Machine Specification</a>
    2171     */
    2172    public static final short FRETURN = 174;
    2173
    2174    /**
    2175     * Java VM opcode.
    2176     *
    2177     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dreturn"> Opcode definitions in
    2178     *      The Java Virtual Machine Specification</a>
    2179     */
    2180    public static final short DRETURN = 175;
    2181
    2182    /**
    2183     * Java VM opcode.
    2184     *
    2185     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.areturn"> Opcode definitions in
    2186     *      The Java Virtual Machine Specification</a>
    2187     */
    2188    public static final short ARETURN = 176;
    2189
    2190    /**
    2191     * Java VM opcode.
    2192     *
    2193     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.return"> Opcode definitions in
    2194     *      The Java Virtual Machine Specification</a>
    2195     */
    2196    public static final short RETURN = 177;
    2197
    2198    /**
    2199     * Java VM opcode.
    2200     *
    2201     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.getstatic"> Opcode definitions
    2202     *      in The Java Virtual Machine Specification</a>
    2203     */
    2204    public static final short GETSTATIC = 178;
    2205
    2206    /**
    2207     * Java VM opcode.
    2208     *
    2209     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.putstatic"> Opcode definitions
    2210     *      in The Java Virtual Machine Specification</a>
    2211     */
    2212    public static final short PUTSTATIC = 179;
    2213
    2214    /**
    2215     * Java VM opcode.
    2216     *
    2217     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.getfield"> Opcode definitions
    2218     *      in The Java Virtual Machine Specification</a>
    2219     */
    2220    public static final short GETFIELD = 180;
    2221
    2222    /**
    2223     * Java VM opcode.
    2224     *
    2225     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.putfield"> Opcode definitions
    2226     *      in The Java Virtual Machine Specification</a>
    2227     */
    2228    public static final short PUTFIELD = 181;
    2229
    2230    /**
    2231     * Java VM opcode.
    2232     *
    2233     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokevirtual"> Opcode
    2234     *      definitions in The Java Virtual Machine Specification</a>
    2235     */
    2236    public static final short INVOKEVIRTUAL = 182;
    2237
    2238    /**
    2239     * Java VM opcode.
    2240     *
    2241     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokespecial"> Opcode
    2242     *      definitions in The Java Virtual Machine Specification</a>
    2243     */
    2244    public static final short INVOKESPECIAL = 183;
    2245
    2246    /**
    2247     * Java VM opcode.
    2248     *
    2249     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5"> Opcode definitions in The
    2250     *      Java Virtual Machine Specification</a>
    2251     */
    2252    public static final short INVOKENONVIRTUAL = 183; // Old name in JDK 1.0
    2253
    2254    /**
    2255     * Java VM opcode.
    2256     *
    2257     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokestatic"> Opcode
    2258     *      definitions in The Java Virtual Machine Specification</a>
    2259     */
    2260    public static final short INVOKESTATIC = 184;
    2261
    2262    /**
    2263     * Java VM opcode.
    2264     *
    2265     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokeinterface"> Opcode
    2266     *      definitions in The Java Virtual Machine Specification</a>
    2267     */
    2268    public static final short INVOKEINTERFACE = 185;
    2269
    2270    /**
    2271     * Java VM opcode.
    2272     *
    2273     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokedynamic"> Opcode
    2274     *      definitions in The Java Virtual Machine Specification</a>
    2275     */
    2276    public static final short INVOKEDYNAMIC = 186;
    2277
    2278    /**
    2279     * Java VM opcode.
    2280     *
    2281     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.new"> Opcode definitions in The
    2282     *      Java Virtual Machine Specification</a>
    2283     */
    2284    public static final short NEW = 187;
    2285
    2286    /**
    2287     * Java VM opcode.
    2288     *
    2289     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.newarray"> Opcode definitions
    2290     *      in The Java Virtual Machine Specification</a>
    2291     */
    2292    public static final short NEWARRAY = 188;
    2293
    2294    /**
    2295     * Java VM opcode.
    2296     *
    2297     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.anewarray"> Opcode definitions
    2298     *      in The Java Virtual Machine Specification</a>
    2299     */
    2300    public static final short ANEWARRAY = 189;
    2301
    2302    /**
    2303     * Java VM opcode.
    2304     *
    2305     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.arraylength"> Opcode
    2306     *      definitions in The Java Virtual Machine Specification</a>
    2307     */
    2308    public static final short ARRAYLENGTH = 190;
    2309
    2310    /**
    2311     * Java VM opcode.
    2312     *
    2313     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.athrow"> Opcode definitions in
    2314     *      The Java Virtual Machine Specification</a>
    2315     */
    2316    public static final short ATHROW = 191;
    2317
    2318    /**
    2319     * Java VM opcode.
    2320     *
    2321     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.checkcast"> Opcode definitions
    2322     *      in The Java Virtual Machine Specification</a>
    2323     */
    2324    public static final short CHECKCAST = 192;
    2325
    2326    /**
    2327     * Java VM opcode.
    2328     *
    2329     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.instanceof"> Opcode definitions
    2330     *      in The Java Virtual Machine Specification</a>
    2331     */
    2332    public static final short INSTANCEOF = 193;
    2333
    2334    /**
    2335     * Java VM opcode.
    2336     *
    2337     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.monitorenter"> Opcode
    2338     *      definitions in The Java Virtual Machine Specification</a>
    2339     */
    2340    public static final short MONITORENTER = 194;
    2341
    2342    /**
    2343     * Java VM opcode.
    2344     *
    2345     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.monitorexit"> Opcode
    2346     *      definitions in The Java Virtual Machine Specification</a>
    2347     */
    2348    public static final short MONITOREXIT = 195;
    2349
    2350    /**
    2351     * Java VM opcode.
    2352     *
    2353     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.wide"> Opcode definitions in
    2354     *      The Java Virtual Machine Specification</a>
    2355     */
    2356    public static final short WIDE = 196;
    2357
    2358    /**
    2359     * Java VM opcode.
    2360     *
    2361     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.multianewarray"> Opcode
    2362     *      definitions in The Java Virtual Machine Specification</a>
    2363     */
    2364    public static final short MULTIANEWARRAY = 197;
    2365
    2366    /**
    2367     * Java VM opcode.
    2368     *
    2369     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifnull"> Opcode definitions in
    2370     *      The Java Virtual Machine Specification</a>
    2371     */
    2372    public static final short IFNULL = 198;
    2373
    2374    /**
    2375     * Java VM opcode.
    2376     *
    2377     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifnonnull"> Opcode definitions
    2378     *      in The Java Virtual Machine Specification</a>
    2379     */
    2380    public static final short IFNONNULL = 199;
    2381
    2382    /**
    2383     * Java VM opcode.
    2384     *
    2385     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.goto_w"> Opcode definitions in
    2386     *      The Java Virtual Machine Specification</a>
    2387     */
    2388    public static final short GOTO_W = 200;
    2389
    2390    /**
    2391     * Java VM opcode.
    2392     *
    2393     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.jsr_w"> Opcode definitions in
    2394     *      The Java Virtual Machine Specification</a>
    2395     */
    2396    public static final short JSR_W = 201;
    2397
    2398    /**
    2399     * JVM internal opcode.
    2400     *
    2401     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.2"> Reserved opcodes in the Java
    2402     *      Virtual Machine Specification</a>
    2403     */
    2404    public static final short BREAKPOINT = 202;
    2405
    2406    /**
    2407     * JVM internal opcode.
    2408     *
    2409     * @see <a href=
    2410     *      "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    2411     *      Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    2412     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
    2413     *      opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
    2414     */
    2415    public static final short LDC_QUICK = 203;
    2416
    2417    /**
    2418     * JVM internal opcode.
    2419     *
    2420     * @see <a href=
    2421     *      "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    2422     *      Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    2423     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
    2424     *      opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
    2425     */
    2426    public static final short LDC_W_QUICK = 204;
    2427
    2428    /**
    2429     * JVM internal opcode.
    2430     *
    2431     * @see <a href=
    2432     *      "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    2433     *      Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    2434     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
    2435     *      opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
    2436     */
    2437    public static final short LDC2_W_QUICK = 205;
    2438
    2439    /**
    2440     * JVM internal opcode.
    2441     *
    2442     * @see <a href=
    2443     *      "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    2444     *      Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    2445     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
    2446     *      opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
    2447     */
    2448    public static final short GETFIELD_QUICK = 206;
    2449
    2450    /**
    2451     * JVM internal opcode.
    2452     *
    2453     * @see <a href=
    2454     *      "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    2455     *      Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    2456     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
    2457     *      opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
    2458     */
    2459    public static final short PUTFIELD_QUICK = 207;
    2460
    2461    /**
    2462     * JVM internal opcode.
    2463     *
    2464     * @see <a href=
    2465     *      "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    2466     *      Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    2467     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
    2468     *      opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
    2469     */
    2470    public static final short GETFIELD2_QUICK = 208;
    2471
    2472    /**
    2473     * JVM internal opcode.
    2474     *
    2475     * @see <a href=
    2476     *      "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    2477     *      Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    2478     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
    2479     *      opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
    2480     */
    2481    public static final short PUTFIELD2_QUICK = 209;
    2482
    2483    /**
    2484     * JVM internal opcode.
    2485     *
    2486     * @see <a href=
    2487     *      "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    2488     *      Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    2489     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
    2490     *      opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
    2491     */
    2492    public static final short GETSTATIC_QUICK = 210;
    2493
    2494    /**
    2495     * JVM internal opcode.
    2496     *
    2497     * @see <a href=
    2498     *      "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    2499     *      Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    2500     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
    2501     *      opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
    2502     */
    2503    public static final short PUTSTATIC_QUICK = 211;
    2504
    2505    /**
    2506     * JVM internal opcode.
    2507     *
    2508     * @see <a href=
    2509     *      "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    2510     *      Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    2511     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
    2512     *      opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
    2513     */
    2514    public static final short GETSTATIC2_QUICK = 212;
    2515
    2516    /**
    2517     * JVM internal opcode.
    2518     *
    2519     * @see <a href=
    2520     *      "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    2521     *      Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    2522     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
    2523     *      opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
    2524     */
    2525    public static final short PUTSTATIC2_QUICK = 213;
    2526
    2527    /**
    2528     * JVM internal opcode.
    2529     *
    2530     * @see <a href=
    2531     *      "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    2532     *      Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    2533     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
    2534     *      opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
    2535     */
    2536    public static final short INVOKEVIRTUAL_QUICK = 214;
    2537
    2538    /**
    2539     * JVM internal opcode.
    2540     *
    2541     * @see <a href=
    2542     *      "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    2543     *      Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    2544     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
    2545     *      opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
    2546     */
    2547    public static final short INVOKENONVIRTUAL_QUICK = 215;
    2548
    2549    /**
    2550     * JVM internal opcode.
    2551     *
    2552     * @see <a href=
    2553     *      "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    2554     *      Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    2555     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
    2556     *      opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
    2557     */
    2558    public static final short INVOKESUPER_QUICK = 216;
    2559
    2560    /**
    2561     * JVM internal opcode.
    2562     *
    2563     * @see <a href=
    2564     *      "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    2565     *      Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    2566     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
    2567     *      opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
    2568     */
    2569    public static final short INVOKESTATIC_QUICK = 217;
    2570
    2571    /**
    2572     * JVM internal opcode.
    2573     *
    2574     * @see <a href=
    2575     *      "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    2576     *      Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    2577     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
    2578     *      opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
    2579     */
    2580    public static final short INVOKEINTERFACE_QUICK = 218;
    2581
    2582    /**
    2583     * JVM internal opcode.
    2584     *
    2585     * @see <a href=
    2586     *      "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    2587     *      Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    2588     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
    2589     *      opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
    2590     */
    2591    public static final short INVOKEVIRTUALOBJECT_QUICK = 219;
    2592
    2593    /**
    2594     * JVM internal opcode.
    2595     *
    2596     * @see <a href=
    2597     *      "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    2598     *      Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    2599     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
    2600     *      opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
    2601     */
    2602    public static final short NEW_QUICK = 221;
    2603
    2604    /**
    2605     * JVM internal opcode.
    2606     *
    2607     * @see <a href=
    2608     *      "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    2609     *      Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    2610     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
    2611     *      opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
    2612     */
    2613    public static final short ANEWARRAY_QUICK = 222;
    2614
    2615    /**
    2616     * JVM internal opcode.
    2617     *
    2618     * @see <a href=
    2619     *      "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    2620     *      Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    2621     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
    2622     *      opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
    2623     */
    2624    public static final short MULTIANEWARRAY_QUICK = 223;
    2625
    2626    /**
    2627     * JVM internal opcode.
    2628     *
    2629     * @see <a href=
    2630     *      "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    2631     *      Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    2632     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
    2633     *      opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
    2634     */
    2635    public static final short CHECKCAST_QUICK = 224;
    2636
    2637    /**
    2638     * JVM internal opcode.
    2639     *
    2640     * @see <a href=
    2641     *      "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    2642     *      Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    2643     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
    2644     *      opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
    2645     */
    2646    public static final short INSTANCEOF_QUICK = 225;
    2647
    2648    /**
    2649     * JVM internal opcode.
    2650     *
    2651     * @see <a href=
    2652     *      "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    2653     *      Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    2654     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
    2655     *      opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
    2656     */
    2657    public static final short INVOKEVIRTUAL_QUICK_W = 226;
    2658
    2659    /**
    2660     * JVM internal opcode.
    2661     *
    2662     * @see <a href=
    2663     *      "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    2664     *      Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    2665     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
    2666     *      opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
    2667     */
    2668    public static final short GETFIELD_QUICK_W = 227;
    2669
    2670    /**
    2671     * JVM internal opcode.
    2672     *
    2673     * @see <a href=
    2674     *      "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    2675     *      Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    2676     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
    2677     *      opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
    2678     */
    2679    public static final short PUTFIELD_QUICK_W = 228;
    2680
    2681    /**
    2682     * JVM internal opcode.
    2683     *
    2684     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.2"> Reserved opcodes in the Java
    2685     *      Virtual Machine Specification</a>
    2686     */
    2687    public static final short IMPDEP1 = 254;
    2688
    2689    /**
    2690     * JVM internal opcode.
    2691     *
    2692     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.2"> Reserved opcodes in the Java
    2693     *      Virtual Machine Specification</a>
    2694     */
    2695    public static final short IMPDEP2 = 255;
    2696
    2697    /**
    2698     * BCEL virtual instruction for pushing an arbitrary data type onto the stack. Will be converted to the appropriate JVM
    2699     * opcode when the class is dumped.
    2700     */
    2701    public static final short PUSH = 4711;
    2702
    2703    /**
    2704     * BCEL virtual instruction for either LOOKUPSWITCH or TABLESWITCH. Will be converted to the appropriate JVM opcode when
    2705     * the class is dumped.
    2706     */
    2707    public static final short SWITCH = 4712;
    2708
    2709    /** Illegal opcode. */
    2710    public static final short UNDEFINED = -1;
    2711
    2712    /** Illegal opcode. */
    2713    public static final short UNPREDICTABLE = -2;
    2714
    2715    /** Illegal opcode. */
    2716    public static final short RESERVED = -3;
    2717
    2718    /** Mnemonic for an illegal opcode. */
    2719    public static final String ILLEGAL_OPCODE = "<illegal opcode>";
    2720
    2721    /** Mnemonic for an illegal type. */
    2722    public static final String ILLEGAL_TYPE = "<illegal type>";
    2723
    2724    /**
    2725     * Boolean data type.
    2726     *
    2727     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> Static Constraints in
    2728     *      the Java Virtual Machine Specification</a>
    2729     */
    2730    public static final byte T_BOOLEAN = 4;
    2731
    2732    /**
    2733     * Char data type.
    2734     *
    2735     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> Static Constraints in
    2736     *      the Java Virtual Machine Specification</a>
    2737     */
    2738    public static final byte T_CHAR = 5;
    2739
    2740    /**
    2741     * Float data type.
    2742     *
    2743     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> Static Constraints in
    2744     *      the Java Virtual Machine Specification</a>
    2745     */
    2746    public static final byte T_FLOAT = 6;
    2747
    2748    /**
    2749     * Double data type.
    2750     *
    2751     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> Static Constraints in
    2752     *      the Java Virtual Machine Specification</a>
    2753     */
    2754    public static final byte T_DOUBLE = 7;
    2755
    2756    /**
    2757     * Byte data type.
    2758     *
    2759     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> Static Constraints in
    2760     *      the Java Virtual Machine Specification</a>
    2761     */
    2762    public static final byte T_BYTE = 8;
    2763
    2764    /**
    2765     * Short data type.
    2766     *
    2767     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> Static Constraints in
    2768     *      the Java Virtual Machine Specification</a>
    2769     */
    2770    public static final byte T_SHORT = 9;
    2771
    2772    /**
    2773     * Int data type.
    2774     *
    2775     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> Static Constraints in
    2776     *      the Java Virtual Machine Specification</a>
    2777     */
    2778    public static final byte T_INT = 10;
    2779
    2780    /**
    2781     * Long data type.
    2782     *
    2783     * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> Static Constraints in
    2784     *      the Java Virtual Machine Specification</a>
    2785     */
    2786    public static final byte T_LONG = 11;
    2787
    2788    /** Void data type (non-standard). */
    2789    public static final byte T_VOID = 12; // Non-standard
    2790
    2791    /** Array data type. */
    2792    public static final byte T_ARRAY = 13;
    2793
    2794    /** Object data type. */
    2795    public static final byte T_OBJECT = 14;
    2796
    2797    /** Reference data type (deprecated). */
    2798    public static final byte T_REFERENCE = 14; // Deprecated
    2799
    2800    /** Unknown data type. */
    2801    public static final byte T_UNKNOWN = 15;
    2802
    2803    /** Address data type. */
    2804    public static final byte T_ADDRESS = 16;
    2805
    2806    /**
    2807     * The primitive type names corresponding to the T_XX constants, e.g., TYPE_NAMES[T_INT] = "int"
    2808     */
    2809    private static final String[] TYPE_NAMES = {ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, "boolean", "char", "float", "double", "byte", "short",
    2810        "int", "long", "void", "array", "object", "unknown", "address"};
    2811
    2812    /**
    2813     * The primitive class names corresponding to the T_XX constants, e.g., CLASS_TYPE_NAMES[T_INT] = "java.lang.Integer"
    2814     */
    2815    private static final String[] CLASS_TYPE_NAMES = {ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, "java.lang.Boolean", "java.lang.Character",
    2816        "java.lang.Float", "java.lang.Double", "java.lang.Byte", "java.lang.Short", "java.lang.Integer", "java.lang.Long", "java.lang.Void", ILLEGAL_TYPE,
    2817        ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE};
    2818
    2819    /**
    2820     * The signature characters corresponding to primitive types, e.g., SHORT_TYPE_NAMES[T_INT] = "I"
    2821     */
    2822    private static final String[] SHORT_TYPE_NAMES = {ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, "Z", "C", "F", "D", "B", "S", "I", "J", "V",
    2823        ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE};
    2824
    2825    /**
    2826     * Number of byte code operands for each opcode, i.e., number of bytes after the tag byte itself. Indexed by opcode, so
    2827     * NO_OF_OPERANDS[BIPUSH] = the number of operands for a bipush instruction.
    2828     */
    2829    private static final short[] NO_OF_OPERANDS = {0/* nop */, 0/* aconst_null */, 0/* iconst_m1 */, 0/* iconst_0 */, 0/* iconst_1 */, 0/* iconst_2 */,
    2830        0/* iconst_3 */, 0/* iconst_4 */, 0/* iconst_5 */, 0/* lconst_0 */, 0/* lconst_1 */, 0/* fconst_0 */, 0/* fconst_1 */, 0/* fconst_2 */, 0/* dconst_0 */,
    2831        0/* dconst_1 */, 1/* bipush */, 2/* sipush */, 1/* ldc */, 2/* ldc_w */, 2/* ldc2_w */, 1/* iload */, 1/* lload */, 1/* fload */, 1/* dload */,
    2832        1/* aload */, 0/* iload_0 */, 0/* iload_1 */, 0/* iload_2 */, 0/* iload_3 */, 0/* lload_0 */, 0/* lload_1 */, 0/* lload_2 */, 0/* lload_3 */,
    2833        0/* fload_0 */, 0/* fload_1 */, 0/* fload_2 */, 0/* fload_3 */, 0/* dload_0 */, 0/* dload_1 */, 0/* dload_2 */, 0/* dload_3 */, 0/* aload_0 */,
    2834        0/* aload_1 */, 0/* aload_2 */, 0/* aload_3 */, 0/* iaload */, 0/* laload */, 0/* faload */, 0/* daload */, 0/* aaload */, 0/* baload */, 0/* caload */,
    2835        0/* saload */, 1/* istore */, 1/* lstore */, 1/* fstore */, 1/* dstore */, 1/* astore */, 0/* istore_0 */, 0/* istore_1 */, 0/* istore_2 */,
    2836        0/* istore_3 */, 0/* lstore_0 */, 0/* lstore_1 */, 0/* lstore_2 */, 0/* lstore_3 */, 0/* fstore_0 */, 0/* fstore_1 */, 0/* fstore_2 */, 0/* fstore_3 */,
    2837        0/* dstore_0 */, 0/* dstore_1 */, 0/* dstore_2 */, 0/* dstore_3 */, 0/* astore_0 */, 0/* astore_1 */, 0/* astore_2 */, 0/* astore_3 */, 0/* iastore */,
    2838        0/* lastore */, 0/* fastore */, 0/* dastore */, 0/* aastore */, 0/* bastore */, 0/* castore */, 0/* sastore */, 0/* pop */, 0/* pop2 */, 0/* dup */,
    2839        0/* dup_x1 */, 0/* dup_x2 */, 0/* dup2 */, 0/* dup2_x1 */, 0/* dup2_x2 */, 0/* swap */, 0/* iadd */, 0/* ladd */, 0/* fadd */, 0/* dadd */, 0/* isub */,
    2840        0/* lsub */, 0/* fsub */, 0/* dsub */, 0/* imul */, 0/* lmul */, 0/* fmul */, 0/* dmul */, 0/* idiv */, 0/* ldiv */, 0/* fdiv */, 0/* ddiv */,
    2841        0/* irem */, 0/* lrem */, 0/* frem */, 0/* drem */, 0/* ineg */, 0/* lneg */, 0/* fneg */, 0/* dneg */, 0/* ishl */, 0/* lshl */, 0/* ishr */,
    2842        0/* lshr */, 0/* iushr */, 0/* lushr */, 0/* iand */, 0/* land */, 0/* ior */, 0/* lor */, 0/* ixor */, 0/* lxor */, 2/* iinc */, 0/* i2l */,
    2843        0/* i2f */, 0/* i2d */, 0/* l2i */, 0/* l2f */, 0/* l2d */, 0/* f2i */, 0/* f2l */, 0/* f2d */, 0/* d2i */, 0/* d2l */, 0/* d2f */, 0/* i2b */,
    2844        0/* i2c */, 0/* i2s */, 0/* lcmp */, 0/* fcmpl */, 0/* fcmpg */, 0/* dcmpl */, 0/* dcmpg */, 2/* ifeq */, 2/* ifne */, 2/* iflt */, 2/* ifge */,
    2845        2/* ifgt */, 2/* ifle */, 2/* if_icmpeq */, 2/* if_icmpne */, 2/* if_icmplt */, 2/* if_icmpge */, 2/* if_icmpgt */, 2/* if_icmple */, 2/* if_acmpeq */,
    2846        2/* if_acmpne */, 2/* goto */, 2/* jsr */, 1/* ret */, UNPREDICTABLE/* tableswitch */, UNPREDICTABLE/* lookupswitch */, 0/* ireturn */, 0/* lreturn */,
    2847        0/* freturn */, 0/* dreturn */, 0/* areturn */, 0/* return */, 2/* getstatic */, 2/* putstatic */, 2/* getfield */, 2/* putfield */,
    2848        2/* invokevirtual */, 2/* invokespecial */, 2/* invokestatic */, 4/* invokeinterface */, 4/* invokedynamic */, 2/* new */, 1/* newarray */,
    2849        2/* anewarray */, 0/* arraylength */, 0/* athrow */, 2/* checkcast */, 2/* instanceof */, 0/* monitorenter */, 0/* monitorexit */,
    2850        UNPREDICTABLE/* wide */, 3/* multianewarray */, 2/* ifnull */, 2/* ifnonnull */, 4/* goto_w */, 4/* jsr_w */, 0/* breakpoint */, UNDEFINED, UNDEFINED,
    2851        UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2852        UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2853        UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2854        UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, RESERVED/* impdep1 */,
    2855        RESERVED/* impdep2 */
    2856    };
    2857
    2858    /**
    2859     * How the byte code operands are to be interpreted for each opcode. Indexed by opcode. TYPE_OF_OPERANDS[ILOAD] = an
    2860     * array of shorts describing the data types for the instruction.
    2861     */
    2862    private static final short[][] TYPE_OF_OPERANDS = {{}/* nop */, {}/* aconst_null */, {}/* iconst_m1 */, {}/* iconst_0 */, {}/* iconst_1 */,
    2863        {}/* iconst_2 */, {}/* iconst_3 */, {}/* iconst_4 */, {}/* iconst_5 */, {}/* lconst_0 */, {}/* lconst_1 */, {}/* fconst_0 */, {}/* fconst_1 */,
    2864        {}/* fconst_2 */, {}/* dconst_0 */, {}/* dconst_1 */, {T_BYTE}/* bipush */, {T_SHORT}/* sipush */, {T_BYTE}/* ldc */, {T_SHORT}/* ldc_w */,
    2865        {T_SHORT}/* ldc2_w */, {T_BYTE}/* iload */, {T_BYTE}/* lload */, {T_BYTE}/* fload */, {T_BYTE}/* dload */, {T_BYTE}/* aload */, {}/* iload_0 */,
    2866        {}/* iload_1 */, {}/* iload_2 */, {}/* iload_3 */, {}/* lload_0 */, {}/* lload_1 */, {}/* lload_2 */, {}/* lload_3 */, {}/* fload_0 */, {}/* fload_1 */,
    2867        {}/* fload_2 */, {}/* fload_3 */, {}/* dload_0 */, {}/* dload_1 */, {}/* dload_2 */, {}/* dload_3 */, {}/* aload_0 */, {}/* aload_1 */, {}/* aload_2 */,
    2868        {}/* aload_3 */, {}/* iaload */, {}/* laload */, {}/* faload */, {}/* daload */, {}/* aaload */, {}/* baload */, {}/* caload */, {}/* saload */,
    2869        {T_BYTE}/* istore */, {T_BYTE}/* lstore */, {T_BYTE}/* fstore */, {T_BYTE}/* dstore */, {T_BYTE}/* astore */, {}/* istore_0 */, {}/* istore_1 */,
    2870        {}/* istore_2 */, {}/* istore_3 */, {}/* lstore_0 */, {}/* lstore_1 */, {}/* lstore_2 */, {}/* lstore_3 */, {}/* fstore_0 */, {}/* fstore_1 */,
    2871        {}/* fstore_2 */, {}/* fstore_3 */, {}/* dstore_0 */, {}/* dstore_1 */, {}/* dstore_2 */, {}/* dstore_3 */, {}/* astore_0 */, {}/* astore_1 */,
    2872        {}/* astore_2 */, {}/* astore_3 */, {}/* iastore */, {}/* lastore */, {}/* fastore */, {}/* dastore */, {}/* aastore */, {}/* bastore */,
    2873        {}/* castore */, {}/* sastore */, {}/* pop */, {}/* pop2 */, {}/* dup */, {}/* dup_x1 */, {}/* dup_x2 */, {}/* dup2 */, {}/* dup2_x1 */,
    2874        {}/* dup2_x2 */, {}/* swap */, {}/* iadd */, {}/* ladd */, {}/* fadd */, {}/* dadd */, {}/* isub */, {}/* lsub */, {}/* fsub */, {}/* dsub */,
    2875        {}/* imul */, {}/* lmul */, {}/* fmul */, {}/* dmul */, {}/* idiv */, {}/* ldiv */, {}/* fdiv */, {}/* ddiv */, {}/* irem */, {}/* lrem */,
    2876        {}/* frem */, {}/* drem */, {}/* ineg */, {}/* lneg */, {}/* fneg */, {}/* dneg */, {}/* ishl */, {}/* lshl */, {}/* ishr */, {}/* lshr */,
    2877        {}/* iushr */, {}/* lushr */, {}/* iand */, {}/* land */, {}/* ior */, {}/* lor */, {}/* ixor */, {}/* lxor */, {T_BYTE, T_BYTE}/* iinc */, {}/* i2l */,
    2878        {}/* i2f */, {}/* i2d */, {}/* l2i */, {}/* l2f */, {}/* l2d */, {}/* f2i */, {}/* f2l */, {}/* f2d */, {}/* d2i */, {}/* d2l */, {}/* d2f */,
    2879        {}/* i2b */, {}/* i2c */, {}/* i2s */, {}/* lcmp */, {}/* fcmpl */, {}/* fcmpg */, {}/* dcmpl */, {}/* dcmpg */, {T_SHORT}/* ifeq */,
    2880        {T_SHORT}/* ifne */, {T_SHORT}/* iflt */, {T_SHORT}/* ifge */, {T_SHORT}/* ifgt */, {T_SHORT}/* ifle */, {T_SHORT}/* if_icmpeq */,
    2881        {T_SHORT}/* if_icmpne */, {T_SHORT}/* if_icmplt */, {T_SHORT}/* if_icmpge */, {T_SHORT}/* if_icmpgt */, {T_SHORT}/* if_icmple */,
    2882        {T_SHORT}/* if_acmpeq */, {T_SHORT}/* if_acmpne */, {T_SHORT}/* goto */, {T_SHORT}/* jsr */, {T_BYTE}/* ret */, {}/* tableswitch */,
    2883        {}/* lookupswitch */, {}/* ireturn */, {}/* lreturn */, {}/* freturn */, {}/* dreturn */, {}/* areturn */, {}/* return */, {T_SHORT}/* getstatic */,
    2884        {T_SHORT}/* putstatic */, {T_SHORT}/* getfield */, {T_SHORT}/* putfield */, {T_SHORT}/* invokevirtual */, {T_SHORT}/* invokespecial */,
    2885        {T_SHORT}/* invokestatic */, {T_SHORT, T_BYTE, T_BYTE}/* invokeinterface */, {T_SHORT, T_BYTE, T_BYTE}/* invokedynamic */, {T_SHORT}/* new */,
    2886        {T_BYTE}/* newarray */, {T_SHORT}/* anewarray */, {}/* arraylength */, {}/* athrow */, {T_SHORT}/* checkcast */, {T_SHORT}/* instanceof */,
    2887        {}/* monitorenter */, {}/* monitorexit */, {T_BYTE}/* wide */, {T_SHORT, T_BYTE}/* multianewarray */, {T_SHORT}/* ifnull */, {T_SHORT}/* ifnonnull */,
    2888        {T_INT}/* goto_w */, {T_INT}/* jsr_w */, {}/* breakpoint */, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {},
    2889        {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}/* impdep1 */, {}/* impdep2 */
    2890    };
    2891
    2892    /**
    2893     * Names of opcodes. Indexed by opcode. OPCODE_NAMES[ALOAD] = "aload".
    2894     */
    2895    private static final String[] OPCODE_NAMES = {"nop", "aconst_null", "iconst_m1", "iconst_0", "iconst_1", "iconst_2", "iconst_3", "iconst_4", "iconst_5",
    2896        "lconst_0", "lconst_1", "fconst_0", "fconst_1", "fconst_2", "dconst_0", "dconst_1", "bipush", "sipush", "ldc", "ldc_w", "ldc2_w", "iload", "lload",
    2897        "fload", "dload", "aload", "iload_0", "iload_1", "iload_2", "iload_3", "lload_0", "lload_1", "lload_2", "lload_3", "fload_0", "fload_1", "fload_2",
    2898        "fload_3", "dload_0", "dload_1", "dload_2", "dload_3", "aload_0", "aload_1", "aload_2", "aload_3", "iaload", "laload", "faload", "daload", "aaload",
    2899        "baload", "caload", "saload", "istore", "lstore", "fstore", "dstore", "astore", "istore_0", "istore_1", "istore_2", "istore_3", "lstore_0", "lstore_1",
    2900        "lstore_2", "lstore_3", "fstore_0", "fstore_1", "fstore_2", "fstore_3", "dstore_0", "dstore_1", "dstore_2", "dstore_3", "astore_0", "astore_1",
    2901        "astore_2", "astore_3", "iastore", "lastore", "fastore", "dastore", "aastore", "bastore", "castore", "sastore", "pop", "pop2", "dup", "dup_x1",
    2902        "dup_x2", "dup2", "dup2_x1", "dup2_x2", "swap", "iadd", "ladd", "fadd", "dadd", "isub", "lsub", "fsub", "dsub", "imul", "lmul", "fmul", "dmul", "idiv",
    2903        "ldiv", "fdiv", "ddiv", "irem", "lrem", "frem", "drem", "ineg", "lneg", "fneg", "dneg", "ishl", "lshl", "ishr", "lshr", "iushr", "lushr", "iand",
    2904        "land", "ior", "lor", "ixor", "lxor", "iinc", "i2l", "i2f", "i2d", "l2i", "l2f", "l2d", "f2i", "f2l", "f2d", "d2i", "d2l", "d2f", "i2b", "i2c", "i2s",
    2905        "lcmp", "fcmpl", "fcmpg", "dcmpl", "dcmpg", "ifeq", "ifne", "iflt", "ifge", "ifgt", "ifle", "if_icmpeq", "if_icmpne", "if_icmplt", "if_icmpge",
    2906        "if_icmpgt", "if_icmple", "if_acmpeq", "if_acmpne", "goto", "jsr", "ret", "tableswitch", "lookupswitch", "ireturn", "lreturn", "freturn", "dreturn",
    2907        "areturn", "return", "getstatic", "putstatic", "getfield", "putfield", "invokevirtual", "invokespecial", "invokestatic", "invokeinterface",
    2908        "invokedynamic", "new", "newarray", "anewarray", "arraylength", "athrow", "checkcast", "instanceof", "monitorenter", "monitorexit", "wide",
    2909        "multianewarray", "ifnull", "ifnonnull", "goto_w", "jsr_w", "breakpoint", ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2910        ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2911        ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2912        ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2913        ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2914        ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2915        ILLEGAL_OPCODE, ILLEGAL_OPCODE, "impdep1", "impdep2"};
    2916
    2917    /**
    2918     * @since 6.0
    2919     */
    2920    public static final int OPCODE_NAMES_LENGTH = OPCODE_NAMES.length;
    2921
    2922    /**
    2923     * Number of words consumed on operand stack by instructions. Indexed by opcode. CONSUME_STACK[FALOAD] = number of words
    2924     * consumed from the stack by a faload instruction.
    2925     */
    2926    private static final int[] CONSUME_STACK = {0/* nop */, 0/* aconst_null */, 0/* iconst_m1 */, 0/* iconst_0 */, 0/* iconst_1 */, 0/* iconst_2 */,
    2927        0/* iconst_3 */, 0/* iconst_4 */, 0/* iconst_5 */, 0/* lconst_0 */, 0/* lconst_1 */, 0/* fconst_0 */, 0/* fconst_1 */, 0/* fconst_2 */, 0/* dconst_0 */,
    2928        0/* dconst_1 */, 0/* bipush */, 0/* sipush */, 0/* ldc */, 0/* ldc_w */, 0/* ldc2_w */, 0/* iload */, 0/* lload */, 0/* fload */, 0/* dload */,
    2929        0/* aload */, 0/* iload_0 */, 0/* iload_1 */, 0/* iload_2 */, 0/* iload_3 */, 0/* lload_0 */, 0/* lload_1 */, 0/* lload_2 */, 0/* lload_3 */,
    2930        0/* fload_0 */, 0/* fload_1 */, 0/* fload_2 */, 0/* fload_3 */, 0/* dload_0 */, 0/* dload_1 */, 0/* dload_2 */, 0/* dload_3 */, 0/* aload_0 */,
    2931        0/* aload_1 */, 0/* aload_2 */, 0/* aload_3 */, 2/* iaload */, 2/* laload */, 2/* faload */, 2/* daload */, 2/* aaload */, 2/* baload */, 2/* caload */,
    2932        2/* saload */, 1/* istore */, 2/* lstore */, 1/* fstore */, 2/* dstore */, 1/* astore */, 1/* istore_0 */, 1/* istore_1 */, 1/* istore_2 */,
    2933        1/* istore_3 */, 2/* lstore_0 */, 2/* lstore_1 */, 2/* lstore_2 */, 2/* lstore_3 */, 1/* fstore_0 */, 1/* fstore_1 */, 1/* fstore_2 */, 1/* fstore_3 */,
    2934        2/* dstore_0 */, 2/* dstore_1 */, 2/* dstore_2 */, 2/* dstore_3 */, 1/* astore_0 */, 1/* astore_1 */, 1/* astore_2 */, 1/* astore_3 */, 3/* iastore */,
    2935        4/* lastore */, 3/* fastore */, 4/* dastore */, 3/* aastore */, 3/* bastore */, 3/* castore */, 3/* sastore */, 1/* pop */, 2/* pop2 */, 1/* dup */,
    2936        2/* dup_x1 */, 3/* dup_x2 */, 2/* dup2 */, 3/* dup2_x1 */, 4/* dup2_x2 */, 2/* swap */, 2/* iadd */, 4/* ladd */, 2/* fadd */, 4/* dadd */, 2/* isub */,
    2937        4/* lsub */, 2/* fsub */, 4/* dsub */, 2/* imul */, 4/* lmul */, 2/* fmul */, 4/* dmul */, 2/* idiv */, 4/* ldiv */, 2/* fdiv */, 4/* ddiv */,
    2938        2/* irem */, 4/* lrem */, 2/* frem */, 4/* drem */, 1/* ineg */, 2/* lneg */, 1/* fneg */, 2/* dneg */, 2/* ishl */, 3/* lshl */, 2/* ishr */,
    2939        3/* lshr */, 2/* iushr */, 3/* lushr */, 2/* iand */, 4/* land */, 2/* ior */, 4/* lor */, 2/* ixor */, 4/* lxor */, 0/* iinc */, 1/* i2l */,
    2940        1/* i2f */, 1/* i2d */, 2/* l2i */, 2/* l2f */, 2/* l2d */, 1/* f2i */, 1/* f2l */, 1/* f2d */, 2/* d2i */, 2/* d2l */, 2/* d2f */, 1/* i2b */,
    2941        1/* i2c */, 1/* i2s */, 4/* lcmp */, 2/* fcmpl */, 2/* fcmpg */, 4/* dcmpl */, 4/* dcmpg */, 1/* ifeq */, 1/* ifne */, 1/* iflt */, 1/* ifge */,
    2942        1/* ifgt */, 1/* ifle */, 2/* if_icmpeq */, 2/* if_icmpne */, 2/* if_icmplt */, 2 /* if_icmpge */, 2/* if_icmpgt */, 2/* if_icmple */, 2/* if_acmpeq */,
    2943        2/* if_acmpne */, 0/* goto */, 0/* jsr */, 0/* ret */, 1/* tableswitch */, 1/* lookupswitch */, 1/* ireturn */, 2/* lreturn */, 1/* freturn */,
    2944        2/* dreturn */, 1/* areturn */, 0/* return */, 0/* getstatic */, UNPREDICTABLE/* putstatic */, 1/* getfield */, UNPREDICTABLE/* putfield */,
    2945        UNPREDICTABLE/* invokevirtual */, UNPREDICTABLE/* invokespecial */, UNPREDICTABLE/* invokestatic */, UNPREDICTABLE/* invokeinterface */,
    2946        UNPREDICTABLE/* invokedynamic */, 0/* new */, 1/* newarray */, 1/* anewarray */, 1/* arraylength */, 1/* athrow */, 1/* checkcast */, 1/* instanceof */,
    2947        1/* monitorenter */, 1/* monitorexit */, 0/* wide */, UNPREDICTABLE/* multianewarray */, 1/* ifnull */, 1/* ifnonnull */, 0/* goto_w */, 0/* jsr_w */,
    2948        0/* breakpoint */, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2949        UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2950        UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2951        UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2952        UNPREDICTABLE/* impdep1 */, UNPREDICTABLE/* impdep2 */
    2953    };
    2954
    2955    /**
    2956     * Number of words produced onto operand stack by instructions. Indexed by opcode. CONSUME_STACK[DALOAD] = number of
    2957     * words consumed from the stack by a daload instruction.
    2958     */
    2959    private static final int[] PRODUCE_STACK = {0/* nop */, 1/* aconst_null */, 1/* iconst_m1 */, 1/* iconst_0 */, 1/* iconst_1 */, 1/* iconst_2 */,
    2960        1/* iconst_3 */, 1/* iconst_4 */, 1/* iconst_5 */, 2/* lconst_0 */, 2/* lconst_1 */, 1/* fconst_0 */, 1/* fconst_1 */, 1/* fconst_2 */, 2/* dconst_0 */,
    2961        2/* dconst_1 */, 1/* bipush */, 1/* sipush */, 1/* ldc */, 1/* ldc_w */, 2/* ldc2_w */, 1/* iload */, 2/* lload */, 1/* fload */, 2/* dload */,
    2962        1/* aload */, 1/* iload_0 */, 1/* iload_1 */, 1/* iload_2 */, 1/* iload_3 */, 2/* lload_0 */, 2/* lload_1 */, 2/* lload_2 */, 2/* lload_3 */,
    2963        1/* fload_0 */, 1/* fload_1 */, 1/* fload_2 */, 1/* fload_3 */, 2/* dload_0 */, 2/* dload_1 */, 2/* dload_2 */, 2/* dload_3 */, 1/* aload_0 */,
    2964        1/* aload_1 */, 1/* aload_2 */, 1/* aload_3 */, 1/* iaload */, 2/* laload */, 1/* faload */, 2/* daload */, 1/* aaload */, 1/* baload */, 1/* caload */,
    2965        1/* saload */, 0/* istore */, 0/* lstore */, 0/* fstore */, 0/* dstore */, 0/* astore */, 0/* istore_0 */, 0/* istore_1 */, 0/* istore_2 */,
    2966        0/* istore_3 */, 0/* lstore_0 */, 0/* lstore_1 */, 0/* lstore_2 */, 0/* lstore_3 */, 0/* fstore_0 */, 0/* fstore_1 */, 0/* fstore_2 */, 0/* fstore_3 */,
    2967        0/* dstore_0 */, 0/* dstore_1 */, 0/* dstore_2 */, 0/* dstore_3 */, 0/* astore_0 */, 0/* astore_1 */, 0/* astore_2 */, 0/* astore_3 */, 0/* iastore */,
    2968        0/* lastore */, 0/* fastore */, 0/* dastore */, 0/* aastore */, 0/* bastore */, 0/* castore */, 0/* sastore */, 0/* pop */, 0/* pop2 */, 2/* dup */,
    2969        3/* dup_x1 */, 4/* dup_x2 */, 4/* dup2 */, 5/* dup2_x1 */, 6/* dup2_x2 */, 2/* swap */, 1/* iadd */, 2/* ladd */, 1/* fadd */, 2/* dadd */, 1/* isub */,
    2970        2/* lsub */, 1/* fsub */, 2/* dsub */, 1/* imul */, 2/* lmul */, 1/* fmul */, 2/* dmul */, 1/* idiv */, 2/* ldiv */, 1/* fdiv */, 2/* ddiv */,
    2971        1/* irem */, 2/* lrem */, 1/* frem */, 2/* drem */, 1/* ineg */, 2/* lneg */, 1/* fneg */, 2/* dneg */, 1/* ishl */, 2/* lshl */, 1/* ishr */,
    2972        2/* lshr */, 1/* iushr */, 2/* lushr */, 1/* iand */, 2/* land */, 1/* ior */, 2/* lor */, 1/* ixor */, 2/* lxor */, 0/* iinc */, 2/* i2l */,
    2973        1/* i2f */, 2/* i2d */, 1/* l2i */, 1/* l2f */, 2/* l2d */, 1/* f2i */, 2/* f2l */, 2/* f2d */, 1/* d2i */, 2/* d2l */, 1/* d2f */, 1/* i2b */,
    2974        1/* i2c */, 1/* i2s */, 1/* lcmp */, 1/* fcmpl */, 1/* fcmpg */, 1/* dcmpl */, 1/* dcmpg */, 0/* ifeq */, 0/* ifne */, 0/* iflt */, 0/* ifge */,
    2975        0/* ifgt */, 0/* ifle */, 0/* if_icmpeq */, 0/* if_icmpne */, 0/* if_icmplt */, 0/* if_icmpge */, 0/* if_icmpgt */, 0/* if_icmple */, 0/* if_acmpeq */,
    2976        0/* if_acmpne */, 0/* goto */, 1/* jsr */, 0/* ret */, 0/* tableswitch */, 0/* lookupswitch */, 0/* ireturn */, 0/* lreturn */, 0/* freturn */,
    2977        0/* dreturn */, 0/* areturn */, 0/* return */, UNPREDICTABLE/* getstatic */, 0/* putstatic */, UNPREDICTABLE/* getfield */, 0/* putfield */,
    2978        UNPREDICTABLE/* invokevirtual */, UNPREDICTABLE/* invokespecial */, UNPREDICTABLE/* invokestatic */, UNPREDICTABLE/* invokeinterface */,
    2979        UNPREDICTABLE/* invokedynamic */, 1/* new */, 1/* newarray */, 1/* anewarray */, 1/* arraylength */, 1/* athrow */, 1/* checkcast */, 1/* instanceof */,
    2980        0/* monitorenter */, 0/* monitorexit */, 0/* wide */, 1/* multianewarray */, 0/* ifnull */, 0/* ifnonnull */, 0/* goto_w */, 1/* jsr_w */,
    2981        0/* breakpoint */, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2982        UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2983        UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2984        UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2985        UNPREDICTABLE/* impdep1 */, UNPREDICTABLE/* impdep2 */
    2986    };
    2987
    2988    /**
    2989     * Attributes and their corresponding names.
    2990     */
    2991    public static final byte ATTR_UNKNOWN = -1;
    2992
    2993    public static final byte ATTR_SOURCE_FILE = 0;
    2994
    2995    public static final byte ATTR_CONSTANT_VALUE = 1;
    2996
    2997    public static final byte ATTR_CODE = 2;
    2998
    2999    public static final byte ATTR_EXCEPTIONS = 3;
    3000
    3001    public static final byte ATTR_LINE_NUMBER_TABLE = 4;
    3002
    3003    public static final byte ATTR_LOCAL_VARIABLE_TABLE = 5;
    3004
    3005    public static final byte ATTR_INNER_CLASSES = 6;
    3006
    3007    public static final byte ATTR_SYNTHETIC = 7;
    3008
    3009    public static final byte ATTR_DEPRECATED = 8;
    3010
    3011    public static final byte ATTR_PMG = 9;
    3012
    3013    public static final byte ATTR_SIGNATURE = 10;
    3014
    3015    public static final byte ATTR_STACK_MAP = 11;
    3016    public static final byte ATTR_RUNTIME_VISIBLE_ANNOTATIONS = 12;
    3017    public static final byte ATTR_RUNTIME_INVISIBLE_ANNOTATIONS = 13;
    3018    public static final byte ATTR_RUNTIME_VISIBLE_PARAMETER_ANNOTATIONS = 14;
    3019    public static final byte ATTR_RUNTIME_INVISIBLE_PARAMETER_ANNOTATIONS = 15;
    3020    public static final byte ATTR_ANNOTATION_DEFAULT = 16;
    3021    public static final byte ATTR_LOCAL_VARIABLE_TYPE_TABLE = 17;
    3022    public static final byte ATTR_ENCLOSING_METHOD = 18;
    3023    public static final byte ATTR_STACK_MAP_TABLE = 19;
    3024    public static final byte ATTR_BOOTSTRAP_METHODS = 20;
    3025    public static final byte ATTR_METHOD_PARAMETERS = 21;
    3026    public static final byte ATTR_MODULE = 22;
    3027    public static final byte ATTR_MODULE_PACKAGES = 23;
    3028    public static final byte ATTR_MODULE_MAIN_CLASS = 24;
    3029    public static final byte ATTR_NEST_HOST = 25;
    3030    public static final byte ATTR_NEST_MEMBERS = 26;
    3031    public static final short KNOWN_ATTRIBUTES = 27; // count of attributes
    3032    private static final String[] ATTRIBUTE_NAMES = {"SourceFile", "ConstantValue", "Code", "Exceptions", "LineNumberTable", "LocalVariableTable",
    3033        "InnerClasses", "Synthetic", "Deprecated", "PMGClass", "Signature", "StackMap", "RuntimeVisibleAnnotations", "RuntimeInvisibleAnnotations",
    3034        "RuntimeVisibleParameterAnnotations", "RuntimeInvisibleParameterAnnotations", "AnnotationDefault", "LocalVariableTypeTable", "EnclosingMethod",
    3035        "StackMapTable", "BootstrapMethods", "MethodParameters", "Module", "ModulePackages", "ModuleMainClass", "NestHost", "NestMembers"};
    3036    /**
    3037     * Constants used in the StackMap attribute.
    3038     */
    3039    public static final byte ITEM_Bogus = 0;
    3040    public static final byte ITEM_Integer = 1;
    3041    public static final byte ITEM_Float = 2;
    3042    public static final byte ITEM_Double = 3;
    3043    public static final byte ITEM_Long = 4;
    3044    public static final byte ITEM_Null = 5;
    3045    public static final byte ITEM_InitObject = 6;
    3046    public static final byte ITEM_Object = 7;
    3047    public static final byte ITEM_NewObject = 8;
    3048    private static final String[] ITEM_NAMES = {"Bogus", "Integer", "Float", "Double", "Long", "Null", "InitObject", "Object", "NewObject"};
    3049
    3050    /**
    3051     * Constants used to identify StackMapEntry types.
    3052     *
    3053     * For those types which can specify a range, the constant names the lowest value.
    3054     */
    3055    public static final int SAME_FRAME = 0;
    3056
    3057    public static final int SAME_LOCALS_1_STACK_ITEM_FRAME = 64;
    3058
    3059    public static final int SAME_LOCALS_1_STACK_ITEM_FRAME_EXTENDED = 247;
    3060
    3061    public static final int CHOP_FRAME = 248;
    3062    public static final int SAME_FRAME_EXTENDED = 251;
    3063    public static final int APPEND_FRAME = 252;
    3064    public static final int FULL_FRAME = 255;
    3065    /**
    3066     * Constants that define the maximum value of those constants which store ranges.
    3067     */
    3068
    3069    public static final int SAME_FRAME_MAX = 63;
    3070    public static final int SAME_LOCALS_1_STACK_ITEM_FRAME_MAX = 127;
    3071    public static final int CHOP_FRAME_MAX = 250;
    3072    public static final int APPEND_FRAME_MAX = 254;
    3073    public static final byte REF_getField = 1;
    3074
    3075    public static final byte REF_getStatic = 2;
    3076
    3077    public static final byte REF_putField = 3;
    3078
    3079    public static final byte REF_putStatic = 4;
    3080    public static final byte REF_invokeVirtual = 5;
    3081    public static final byte REF_invokeStatic = 6;
    3082    public static final byte REF_invokeSpecial = 7;
    3083    public static final byte REF_newInvokeSpecial = 8;
    3084    public static final byte REF_invokeInterface = 9;
    3085    /**
    3086     * The names of the reference_kinds of a CONSTANT_MethodHandle_info.
    3087     */
    3088    private static final String[] METHODHANDLE_NAMES = {"", "getField", "getStatic", "putField", "putStatic", "invokeVirtual", "invokeStatic", "invokeSpecial",
    3089        "newInvokeSpecial", "invokeInterface"};
    3090
    3091    /**
    3092     * @param index
    3093     * @return the ACCESS_NAMES entry at the given index
    3094     * @since 6.0
    3095     */
    3096    public static String getAccessName(final int index) {
    3097        return ACCESS_NAMES[index];
    3098    }
    3099
    3100    /**
    3101     *
    3102     * @param index
    3103     * @return the attribute name
    3104     * @since 6.0
    3105     */
    3106    public static String getAttributeName(final int index) {
    3107        return ATTRIBUTE_NAMES[index];
    3108    }
    3109
    3110    /**
    3111     * The primitive class names corresponding to the T_XX constants, e.g., CLASS_TYPE_NAMES[T_INT] = "java.lang.Integer"
    3112     *
    3113     * @param index
    3114     * @return the class name
    3115     * @since 6.0
    3116     */
    3117    public static String getClassTypeName(final int index) {
    3118        return CLASS_TYPE_NAMES[index];
    3119    }
    3120
    3121    /**
    3122     *
    3123     * @param index
    3124     * @return the CONSTANT_NAMES entry at the given index
    3125     * @since 6.0
    3126     */
    3127    public static String getConstantName(final int index) {
    3128        return CONSTANT_NAMES[index];
    3129    }
    3130
    3131    // Constants defining the behavior of the Method Handles (JVMS �5.4.3.5)
    3132
    3133    /**
    3134     *
    3135     * @param index
    3136     * @return Number of words consumed on operand stack
    3137     * @since 6.0
    3138     */
    3139    public static int getConsumeStack(final int index) {
    3140        return CONSUME_STACK[index];
    3141    }
    3142
    3143    /**
    3144     * @since 6.0
    3145     */
    3146    public static Iterable<String> getInterfacesImplementedByArrays() {
    3147        return Collections.unmodifiableList(Arrays.asList(INTERFACES_IMPLEMENTED_BY_ARRAYS));
    3148    }
    3149
    3150    /**
    3151     *
    3152     * @param index
    3153     * @return the item name
    3154     * @since 6.0
    3155     */
    3156    public static String getItemName(final int index) {
    3157        return ITEM_NAMES[index];
    3158    }
    3159
    3160    /**
    3161     *
    3162     * @param index
    3163     * @return the method handle name
    3164     * @since 6.0
    3165     */
    3166    public static String getMethodHandleName(final int index) {
    3167        return METHODHANDLE_NAMES[index];
    3168    }
    3169
    3170    /**
    3171     *
    3172     * @param index
    3173     * @return Number of byte code operands
    3174     * @since 6.0
    3175     */
    3176    public static short getNoOfOperands(final int index) {
    3177        return NO_OF_OPERANDS[index];
    3178    }
    3179
    3180    /**
    3181     * @since 6.0
    3182     */
    3183    public static String getOpcodeName(final int index) {
    3184        return OPCODE_NAMES[index];
    3185    }
    3186
    3187    /**
    3188     * @since 6.0
    3189     */
    3190    public static short getOperandType(final int opcode, final int index) {
    3191        return TYPE_OF_OPERANDS[opcode][index];
    3192    }
    3193
    3194    /**
    3195     * @since 6.0
    3196     */
    3197    public static long getOperandTypeCount(final int opcode) {
    3198        return TYPE_OF_OPERANDS[opcode].length;
    3199    }
    3200
    3201    /**
    3202     *
    3203     * @param index
    3204     * @return Number of words produced onto operand stack
    3205     * @since 6.0
    3206     */
    3207    public static int getProduceStack(final int index) {
    3208        return PRODUCE_STACK[index];
    3209    }
    3210
    3211    /**
    3212     *
    3213     * @param index
    3214     * @return the short type name
    3215     * @since 6.0
    3216     */
    3217    public static String getShortTypeName(final int index) {
    3218        return SHORT_TYPE_NAMES[index];
    3219    }
    3220
    3221    /**
    3222     * The primitive type names corresponding to the T_XX constants, e.g., TYPE_NAMES[T_INT] = "int"
    3223     *
    3224     * @param index
    3225     * @return the type name
    3226     * @since 6.0
    3227     */
    3228    public static String getTypeName(final int index) {
    3229        return TYPE_NAMES[index];
    3230    }
    3231
    3232    private Const() {
    3233    } // not instantiable
    3234
    3235}