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