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