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