# Uses of Package
org.apache.bcel.generic

- Packages that use org.apache.bcel.generic
  Package | Description
  --- | ---
  org.apache.bcel.classfile | This package contains the classes that describe the structure of a Java class file and a class file parser.
  org.apache.bcel.generic | This package contains the "generic" part of the Byte Code Engineering Library, i.e., classes to dynamically modify class objects and byte code instructions.
  org.apache.bcel.util | This package contains utility classes for the Byte Code Engineering Library, namely:
  org.apache.bcel.verifier.statics | Provides PassVerifier classes used internally by JustIce.
  org.apache.bcel.verifier.structurals | Provides a PassVerifier class mostly used internally by JustIce, yielding a control flow graph for public use as a nice side effect.

- Classes in org.apache.bcel.generic used by org.apache.bcel.classfile
  Class and Description
  Type Abstract super class for all possible java types, namely basic types such as int, object types like String and array types, e.g.

- Classes in org.apache.bcel.generic used by org.apache.bcel.generic
  Class and Description
  AALOAD AALOAD - Load reference from array
  AASTORE AASTORE - Store into reference array
  ACONST_NULL ACONST_NULL - Push null reference
  AllocationInstruction Denote family of instructions that allocates space in the heap.
  ALOAD ALOAD - Load reference from local variable
  ANEWARRAY ANEWARRAY - Create new array of references
  AnnotationEntryGen
  ARETURN ARETURN - Return reference from method
  ArithmeticInstruction Super class for the family of arithmetic instructions.
  ArrayInstruction Super class for instructions dealing with array access such as IALOAD.
  ARRAYLENGTH ARRAYLENGTH - Get length of array
  ArrayType Denotes array type, such as int[][]
  ASTORE ASTORE - Store reference into local variable
  ATHROW ATHROW - Throw exception
  BALOAD BALOAD - Load byte or boolean from array
  BasicType Denotes basic type such as int.
  BASTORE BASTORE - Store into byte or boolean array
  BIPUSH BIPUSH - Push byte on stack
  BranchHandle BranchHandle is returned by specialized InstructionList.append() whenever a BranchInstruction is appended.
  BranchInstruction Abstract super class for branching instructions like GOTO, IFEQ, etc..
  BREAKPOINT BREAKPOINT, JVM dependent, ignored by default
  CALOAD CALOAD - Load char from array
  CASTORE CASTORE - Store into char array
  CHECKCAST CHECKCAST - Check whether object is of given type
  ClassGen Template class for building up a java class.
  ClassGenException Thrown on internal errors.
  ClassObserver Implement this interface if you're interested in changes to a ClassGen object and register yourself with addObserver().
  CodeExceptionGen This class represents an exception handler, i.e., specifies the region where a handler is active and an instruction where the actual handling is done.
  CompoundInstruction Wrapper class for `compound' operations, virtual instructions that don't exist as byte code, but give a useful meaning.
  ConstantPoolGen This class is used to build up a constant pool.
  ConstantPushInstruction Denotes a push instruction that produces a literal on the stack such as SIPUSH, BIPUSH, ICONST, etc.
  ConversionInstruction Super class for the x2y family of instructions.
  CPInstruction Abstract super class for instructions that use an index into the constant pool such as LDC, INVOKEVIRTUAL, etc.
  D2F D2F - Convert double to float
  D2I D2I - Convert double to int
  D2L D2L - Convert double to long
  DADD DADD - Add doubles
  DALOAD DALOAD - Load double from array
  DASTORE DASTORE - Store into double array
  DCMPG DCMPG - Compare doubles: value1 > value2
  DCMPL DCMPL - Compare doubles: value1 < value2
  DCONST DCONST - Push 0.0 or 1.0, other values cause an exception
  DDIV DDIV - Divide doubles
  DLOAD DLOAD - Load double from local variable
  DMUL DMUL - Multiply doubles
  DNEG DNEG - Negate double
  DREM DREM - Remainder of doubles
  DRETURN DRETURN - Return double from method
  DSTORE DSTORE - Store double into local variable
  DSUB DSUB - Substract doubles
  DUP DUP - Duplicate top operand stack word
  DUP_X1 DUP_X1 - Duplicate top operand stack word and put two down
  DUP_X2 DUP_X2 - Duplicate top operand stack word and put three down
  DUP2 DUP2 - Duplicate two top operand stack words
  DUP2_X1 DUP2_X1 - Duplicate two top operand stack words and put three down
  DUP2_X2 DUP2_X2 - Duplicate two top operand stack words and put four down
  ElementValueGen
  ElementValuePairGen
  ExceptionThrower Denote an instruction that may throw a run-time or a linking exception (or both) during execution.
  F2D F2D - Convert float to double
  F2I F2I - Convert float to int
  F2L F2L - Convert float to long
  FADD FADD - Add floats
  FALOAD FALOAD - Load float from array
  FASTORE FASTORE - Store into float array
  FCMPG FCMPG - Compare floats: value1 > value2
  FCMPL FCMPL - Compare floats: value1 < value2
  FCONST FCONST - Push 0.0, 1.0 or 2.0, other values cause an exception
  FDIV FDIV - Divide floats
  FieldGen Template class for building up a field.
  FieldGenOrMethodGen Super class for FieldGen and MethodGen objects, since they have some methods in common!
  FieldInstruction Super class for the GET/PUTxxx family of instructions.
  FieldObserver Imnplement this interface if you're interested in changes to a FieldGen object and register yourself with addObserver().
  FieldOrMethod Super class for InvokeInstruction and FieldInstruction, since they have some methods in common!
  FLOAD FLOAD - Load float from local variable
  FMUL FMUL - Multiply floats
  FNEG FNEG - Negate float
  FREM FREM - Remainder of floats
  FRETURN FRETURN - Return float from method
  FSTORE FSTORE - Store float into local variable
  FSUB FSUB - Substract floats
  GETFIELD GETFIELD - Fetch field from object
  GETSTATIC GETSTATIC - Fetch static field from class
  GOTO GOTO - Branch always (to relative offset, not absolute address)
  GOTO_W GOTO_W - Branch always (to relative offset, not absolute address)
  GotoInstruction Super class for GOTO
  I2B I2B - Convert int to byte
  I2C I2C - Convert int to char
  I2D I2D - Convert int to double
  I2F I2F - Convert int to float
  I2L I2L - Convert int to long
  I2S I2S - Convert int to short
  IADD IADD - Add ints
  IALOAD IALOAD - Load int from array
  IAND IAND - Bitwise AND int
  IASTORE IASTORE - Store into int array
  ICONST ICONST - Push value between -1, ..., 5, other values cause an exception
  IDIV IDIV - Divide ints
  IF_ACMPEQ IF_ACMPEQ - Branch if reference comparison succeeds
  IF_ACMPNE IF_ACMPNE - Branch if reference comparison doesn't succeed
  IF_ICMPEQ IF_ICMPEQ - Branch if int comparison succeeds
  IF_ICMPGE IF_ICMPGE - Branch if int comparison succeeds
  IF_ICMPGT IF_ICMPGT - Branch if int comparison succeeds
  IF_ICMPLE IF_ICMPLE - Branch if int comparison succeeds
  IF_ICMPLT IF_ICMPLT - Branch if int comparison succeeds
  IF_ICMPNE IF_ICMPNE - Branch if int comparison doesn't succeed
  IFEQ IFEQ - Branch if int comparison with zero succeeds
  IFGE IFGE - Branch if int comparison with zero succeeds
  IFGT IFGT - Branch if int comparison with zero succeeds
  IfInstruction Super class for the IFxxx family of instructions.
  IFLE IFLE - Branch if int comparison with zero succeeds
  IFLT IFLT - Branch if int comparison with zero succeeds
  IFNE IFNE - Branch if int comparison with zero succeeds
  IFNONNULL IFNONNULL - Branch if reference is not null
  IFNULL IFNULL - Branch if reference is not null
  IINC IINC - Increment local variable by constant
  ILOAD ILOAD - Load int from local variable onto stack
  IMPDEP1 IMPDEP1 - Implementation dependent
  IMPDEP2 IMPDEP2 - Implementation dependent
  IMUL IMUL - Multiply ints
  IndexedInstruction Denote entity that refers to an index, e.g.
  INEG INEG - Negate int
  INSTANCEOF INSTANCEOF - Determine if object is of given type
  Instruction Abstract super class for all Java byte codes.
  InstructionComparator Equality of instructions isn't clearly to be defined.
  InstructionConstants Deprecated. (since 6.0) Do not use. Use InstructionConst instead.
  InstructionConstants.Clinit Deprecated.
  InstructionHandle Instances of this class give users a handle to the instructions contained in an InstructionList.
  InstructionList This class is a container for a list of Instruction objects.
  InstructionListObserver Implement this interface if you're interested in changes to an InstructionList object and register yourself with addObserver().
  InstructionTargeter Denote that a class targets InstructionHandles within an InstructionList.
  INVOKEDYNAMIC Class for INVOKEDYNAMIC.
  InvokeInstruction Super class for the INVOKExxx family of instructions.
  INVOKEINTERFACE INVOKEINTERFACE - Invoke interface method
  INVOKESPECIAL INVOKESPECIAL - Invoke instance method; special handling for superclass, private and instance initialization method invocations
  INVOKESTATIC INVOKESTATIC - Invoke a class (static) method
  INVOKEVIRTUAL INVOKEVIRTUAL - Invoke instance method; dispatch based on class
  IOR IOR - Bitwise OR int
  IREM IREM - Remainder of int
  IRETURN IRETURN - Return int from method
  ISHL ISHL - Arithmetic shift left int
  ISHR ISHR - Arithmetic shift right int
  ISTORE ISTORE - Store int from stack into local variable
  ISUB ISUB - Substract ints
  IUSHR IUSHR - Logical shift right int
  IXOR IXOR - Bitwise XOR int
  JSR JSR - Jump to subroutine
  JSR_W JSR_W - Jump to subroutine
  JsrInstruction Super class for JSR - Jump to subroutine
  L2D L2D - Convert long to double
  L2F L2F - Convert long to float
  L2I L2I - Convert long to int
  LADD LADD - Add longs
  LALOAD LALOAD - Load long from array
  LAND LAND - Bitwise AND longs
  LASTORE LASTORE - Store into long array
  LCMP LCMP - Compare longs:
  LCONST LCONST - Push 0 or 1, other values cause an exception
  LDC LDC - Push item from constant pool.
  LDC2_W LDC2_W - Push long or double from constant pool
  LDIV LDIV - Divide longs
  LineNumberGen This class represents a line number within a method, i.e., give an instruction a line number corresponding to the source code line.
  LLOAD LLOAD - Load long from local variable
  LMUL LMUL - Multiply longs
  LNEG LNEG - Negate long
  LoadClass Denotes that an instruction may start the process of loading and resolving the referenced class in the Virtual Machine.
  LoadInstruction Denotes an unparameterized instruction to load a value from a local variable, e.g.
  LocalVariableGen Represents a local variable within a method.
  LocalVariableInstruction Abstract super class for instructions dealing with local variables.
  LOOKUPSWITCH LOOKUPSWITCH - Switch with unordered set of values
  LOR LOR - Bitwise OR long
  LREM LREM - Remainder of long
  LRETURN LRETURN - Return long from method
  LSHL LSHL - Arithmetic shift left long
  LSHR LSHR - Arithmetic shift right long
  LSTORE LSTORE - Store long into local variable
  LSUB LSUB - Substract longs
  LUSHR LUSHR - Logical shift right long
  LXOR LXOR - Bitwise XOR long
  MethodGen Template class for building up a method.
  MethodObserver Implement this interface if you're interested in changes to a MethodGen object and register yourself with addObserver().
  MONITORENTER MONITORENTER - Enter monitor for object
  MONITOREXIT MONITOREXIT - Exit monitor for object
  MULTIANEWARRAY MULTIANEWARRAY - Create new mutidimensional array of references
  NamedAndTyped Denote entity that has both name and type.
  NEW NEW - Create new object
  NEWARRAY NEWARRAY - Create new array of basic type (int, short, ...)
  NOP NOP - Do nothing
  ObjectType Denotes reference such as java.lang.String.
  POP POP - Pop top operand stack word
  POP2 POP2 - Pop two top operand stack words
  PopInstruction Denotes an unparameterized instruction to pop a value on top from the stack, such as ISTORE, POP, PUTSTATIC.
  PushInstruction Denotes an unparameterized instruction to produce a value on top of the stack, such as ILOAD, LDC, SIPUSH, DUP, ICONST, etc.
  PUTFIELD PUTFIELD - Put field in object
  PUTSTATIC PUTSTATIC - Put static field in class
  ReferenceType Super class for object and array types.
  RET RET - Return from subroutine
  RETURN RETURN - Return from void method
  ReturnaddressType Returnaddress, the type JSR or JSR_W instructions push upon the stack.
  ReturnInstruction Super class for the xRETURN family of instructions.
  SALOAD SALOAD - Load short from array
  SASTORE SASTORE - Store into short array
  Select Select - Abstract super class for LOOKUPSWITCH and TABLESWITCH instructions.
  SIPUSH SIPUSH - Push short
  StackConsumer Denote an instruction that may consume a value from the stack.
  StackInstruction Super class for stack operations like DUP and POP.
  StackProducer Denotes an instruction that may produce a value on top of the stack (this excludes DUP_X1, e.g.)
  StoreInstruction Denotes an unparameterized instruction to store a value into a local variable, e.g.
  SWAP SWAP - Swa top operand stack word
  TABLESWITCH TABLESWITCH - Switch within given range of values, i.e., low..high
  TargetLostException Thrown by InstructionList.remove() when one or multiple disposed instructions are still being referenced by an InstructionTargeter object.
  Type Abstract super class for all possible java types, namely basic types such as int, object types like String and array types, e.g.
  TypedInstruction Get the type associated with an instruction, int for ILOAD, or the type of the field of a PUTFIELD instruction, e.g..
  UnconditionalBranch Denotes an instruction to perform an unconditional branch, i.e., GOTO, JSR.
  VariableLengthInstruction Denotes an instruction to be a variable length instruction, such as GOTO, JSR, LOOKUPSWITCH and TABLESWITCH.
  Visitor Interface implementing the Visitor pattern programming style.

- Classes in org.apache.bcel.generic used by org.apache.bcel.util
  Class and Description
  InstructionHandle Instances of this class give users a handle to the instructions contained in an InstructionList.
  InstructionList This class is a container for a list of Instruction objects.

- Classes in org.apache.bcel.generic used by org.apache.bcel.verifier.statics
  Class and Description
  Type Abstract super class for all possible java types, namely basic types such as int, object types like String and array types, e.g.

- Classes in org.apache.bcel.generic used by org.apache.bcel.verifier.structurals
  Class and Description
  AALOAD AALOAD - Load reference from array
  AASTORE AASTORE - Store into reference array
  ACONST_NULL ACONST_NULL - Push null reference
  ALOAD ALOAD - Load reference from local variable
  ANEWARRAY ANEWARRAY - Create new array of references
  ARETURN ARETURN - Return reference from method
  ARRAYLENGTH ARRAYLENGTH - Get length of array
  ASTORE ASTORE - Store reference into local variable
  ATHROW ATHROW - Throw exception
  BALOAD BALOAD - Load byte or boolean from array
  BASTORE BASTORE - Store into byte or boolean array
  BIPUSH BIPUSH - Push byte on stack
  BREAKPOINT BREAKPOINT, JVM dependent, ignored by default
  CALOAD CALOAD - Load char from array
  CASTORE CASTORE - Store into char array
  CHECKCAST CHECKCAST - Check whether object is of given type
  ConstantPoolGen This class is used to build up a constant pool.
  CPInstruction Abstract super class for instructions that use an index into the constant pool such as LDC, INVOKEVIRTUAL, etc.
  D2F D2F - Convert double to float
  D2I D2I - Convert double to int
  D2L D2L - Convert double to long
  DADD DADD - Add doubles
  DALOAD DALOAD - Load double from array
  DASTORE DASTORE - Store into double array
  DCMPG DCMPG - Compare doubles: value1 > value2
  DCMPL DCMPL - Compare doubles: value1 < value2
  DCONST DCONST - Push 0.0 or 1.0, other values cause an exception
  DDIV DDIV - Divide doubles
  DLOAD DLOAD - Load double from local variable
  DMUL DMUL - Multiply doubles
  DNEG DNEG - Negate double
  DREM DREM - Remainder of doubles
  DRETURN DRETURN - Return double from method
  DSTORE DSTORE - Store double into local variable
  DSUB DSUB - Substract doubles
  DUP DUP - Duplicate top operand stack word
  DUP_X1 DUP_X1 - Duplicate top operand stack word and put two down
  DUP_X2 DUP_X2 - Duplicate top operand stack word and put three down
  DUP2 DUP2 - Duplicate two top operand stack words
  DUP2_X1 DUP2_X1 - Duplicate two top operand stack words and put three down
  DUP2_X2 DUP2_X2 - Duplicate two top operand stack words and put four down
  EmptyVisitor Supplies empty method bodies to be overridden by subclasses.
  F2D F2D - Convert float to double
  F2I F2I - Convert float to int
  F2L F2L - Convert float to long
  FADD FADD - Add floats
  FALOAD FALOAD - Load float from array
  FASTORE FASTORE - Store into float array
  FCMPG FCMPG - Compare floats: value1 > value2
  FCMPL FCMPL - Compare floats: value1 < value2
  FCONST FCONST - Push 0.0, 1.0 or 2.0, other values cause an exception
  FDIV FDIV - Divide floats
  FieldInstruction Super class for the GET/PUTxxx family of instructions.
  FLOAD FLOAD - Load float from local variable
  FMUL FMUL - Multiply floats
  FNEG FNEG - Negate float
  FREM FREM - Remainder of floats
  FRETURN FRETURN - Return float from method
  FSTORE FSTORE - Store float into local variable
  FSUB FSUB - Substract floats
  GETFIELD GETFIELD - Fetch field from object
  GETSTATIC GETSTATIC - Fetch static field from class
  GOTO GOTO - Branch always (to relative offset, not absolute address)
  GOTO_W GOTO_W - Branch always (to relative offset, not absolute address)
  I2B I2B - Convert int to byte
  I2C I2C - Convert int to char
  I2D I2D - Convert int to double
  I2F I2F - Convert int to float
  I2L I2L - Convert int to long
  I2S I2S - Convert int to short
  IADD IADD - Add ints
  IALOAD IALOAD - Load int from array
  IAND IAND - Bitwise AND int
  IASTORE IASTORE - Store into int array
  ICONST ICONST - Push value between -1, ..., 5, other values cause an exception
  IDIV IDIV - Divide ints
  IF_ACMPEQ IF_ACMPEQ - Branch if reference comparison succeeds
  IF_ACMPNE IF_ACMPNE - Branch if reference comparison doesn't succeed
  IF_ICMPEQ IF_ICMPEQ - Branch if int comparison succeeds
  IF_ICMPGE IF_ICMPGE - Branch if int comparison succeeds
  IF_ICMPGT IF_ICMPGT - Branch if int comparison succeeds
  IF_ICMPLE IF_ICMPLE - Branch if int comparison succeeds
  IF_ICMPLT IF_ICMPLT - Branch if int comparison succeeds
  IF_ICMPNE IF_ICMPNE - Branch if int comparison doesn't succeed
  IFEQ IFEQ - Branch if int comparison with zero succeeds
  IFGE IFGE - Branch if int comparison with zero succeeds
  IFGT IFGT - Branch if int comparison with zero succeeds
  IFLE IFLE - Branch if int comparison with zero succeeds
  IFLT IFLT - Branch if int comparison with zero succeeds
  IFNE IFNE - Branch if int comparison with zero succeeds
  IFNONNULL IFNONNULL - Branch if reference is not null
  IFNULL IFNULL - Branch if reference is not null
  IINC IINC - Increment local variable by constant
  ILOAD ILOAD - Load int from local variable onto stack
  IMPDEP1 IMPDEP1 - Implementation dependent
  IMPDEP2 IMPDEP2 - Implementation dependent
  IMUL IMUL - Multiply ints
  INEG INEG - Negate int
  INSTANCEOF INSTANCEOF - Determine if object is of given type
  InstructionHandle Instances of this class give users a handle to the instructions contained in an InstructionList.
  INVOKEDYNAMIC Class for INVOKEDYNAMIC.
  InvokeInstruction Super class for the INVOKExxx family of instructions.
  INVOKEINTERFACE INVOKEINTERFACE - Invoke interface method
  INVOKESPECIAL INVOKESPECIAL - Invoke instance method; special handling for superclass, private and instance initialization method invocations
  INVOKESTATIC INVOKESTATIC - Invoke a class (static) method
  INVOKEVIRTUAL INVOKEVIRTUAL - Invoke instance method; dispatch based on class
  IOR IOR - Bitwise OR int
  IREM IREM - Remainder of int
  IRETURN IRETURN - Return int from method
  ISHL ISHL - Arithmetic shift left int
  ISHR ISHR - Arithmetic shift right int
  ISTORE ISTORE - Store int from stack into local variable
  ISUB ISUB - Substract ints
  IUSHR IUSHR - Logical shift right int
  IXOR IXOR - Bitwise XOR int
  JSR JSR - Jump to subroutine
  JSR_W JSR_W - Jump to subroutine
  L2D L2D - Convert long to double
  L2F L2F - Convert long to float
  L2I L2I - Convert long to int
  LADD LADD - Add longs
  LALOAD LALOAD - Load long from array
  LAND LAND - Bitwise AND longs
  LASTORE LASTORE - Store into long array
  LCMP LCMP - Compare longs:
  LCONST LCONST - Push 0 or 1, other values cause an exception
  LDC LDC - Push item from constant pool.
  LDC_W LDC_W - Push item from constant pool (wide index)
  LDC2_W LDC2_W - Push long or double from constant pool
  LDIV LDIV - Divide longs
  LLOAD LLOAD - Load long from local variable
  LMUL LMUL - Multiply longs
  LNEG LNEG - Negate long
  LoadClass Denotes that an instruction may start the process of loading and resolving the referenced class in the Virtual Machine.
  LoadInstruction Denotes an unparameterized instruction to load a value from a local variable, e.g.
  LocalVariableInstruction Abstract super class for instructions dealing with local variables.
  LOOKUPSWITCH LOOKUPSWITCH - Switch with unordered set of values
  LOR LOR - Bitwise OR long
  LREM LREM - Remainder of long
  LRETURN LRETURN - Return long from method
  LSHL LSHL - Arithmetic shift left long
  LSHR LSHR - Arithmetic shift right long
  LSTORE LSTORE - Store long into local variable
  LSUB LSUB - Substract longs
  LUSHR LUSHR - Logical shift right long
  LXOR LXOR - Bitwise XOR long
  MethodGen Template class for building up a method.
  MONITORENTER MONITORENTER - Enter monitor for object
  MONITOREXIT MONITOREXIT - Exit monitor for object
  MULTIANEWARRAY MULTIANEWARRAY - Create new mutidimensional array of references
  NEW NEW - Create new object
  NEWARRAY NEWARRAY - Create new array of basic type (int, short, ...)
  NOP NOP - Do nothing
  ObjectType Denotes reference such as java.lang.String.
  POP POP - Pop top operand stack word
  POP2 POP2 - Pop two top operand stack words
  PUTFIELD PUTFIELD - Put field in object
  PUTSTATIC PUTSTATIC - Put static field in class
  ReferenceType Super class for object and array types.
  RET RET - Return from subroutine
  RETURN RETURN - Return from void method
  ReturnInstruction Super class for the xRETURN family of instructions.
  SALOAD SALOAD - Load short from array
  SASTORE SASTORE - Store into short array
  SIPUSH SIPUSH - Push short
  StackConsumer Denote an instruction that may consume a value from the stack.
  StackInstruction Super class for stack operations like DUP and POP.
  StackProducer Denotes an instruction that may produce a value on top of the stack (this excludes DUP_X1, e.g.)
  StoreInstruction Denotes an unparameterized instruction to store a value into a local variable, e.g.
  SWAP SWAP - Swa top operand stack word
  TABLESWITCH TABLESWITCH - Switch within given range of values, i.e., low..high
  Type Abstract super class for all possible java types, namely basic types such as int, object types like String and array types, e.g.
  Visitor Interface implementing the Visitor pattern programming style.

Copyright © 2004–2022 The Apache Software Foundation. All rights reserved.