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