org.objectweb.asmutil.tree

## Class AbstractInsnNode

- java.lang.Object
- - org.objectweb.asmutil.tree.AbstractInsnNode

Direct Known Subclasses:
  FieldInsnNode, FrameNode, IincInsnNode, InsnNode, IntInsnNode, InvokeDynamicInsnNode, JumpInsnNode, LabelNode, LdcInsnNode, LineNumberNode, LookupSwitchInsnNode, MethodInsnNode, MultiANewArrayInsnNode, TableSwitchInsnNode, TypeInsnNode, VarInsnNode

    public abstract class AbstractInsnNode
    extends java.lang.Object

A node that represents a bytecode instruction. An instruction can appear at most once in at most one `InsnList` at a time.

### Field Summary

Fields
`static int` `FIELD_INSN` The type of `FieldInsnNode` instructions.
`static int` `FRAME` The type of `FrameNode` "instructions".
`static int` `IINC_INSN` The type of `IincInsnNode` instructions.
`static int` `INSN` The type of `InsnNode` instructions.
`static int` `INT_INSN` The type of `IntInsnNode` instructions.
`java.util.List<TypeAnnotationNode>` `invisibleTypeAnnotations` The runtime invisible type annotations of this instruction.
`static int` `INVOKE_DYNAMIC_INSN` The type of `InvokeDynamicInsnNode` instructions.
`static int` `JUMP_INSN` The type of `JumpInsnNode` instructions.
`static int` `LABEL` The type of `LabelNode` "instructions".
`static int` `LDC_INSN` The type of `LdcInsnNode` instructions.
`static int` `LINE` The type of `LineNumberNode` "instructions".
`static int` `LOOKUPSWITCH_INSN` The type of `LookupSwitchInsnNode` instructions.
`static int` `METHOD_INSN` The type of `MethodInsnNode` instructions.
`static int` `MULTIANEWARRAY_INSN` The type of `MultiANewArrayInsnNode` instructions.
`protected int` `opcode` The opcode of this instruction.
`static int` `TABLESWITCH_INSN` The type of `TableSwitchInsnNode` instructions.
`static int` `TYPE_INSN` The type of `TypeInsnNode` instructions.
`static int` `VAR_INSN` The type of `VarInsnNode` instructions.
`java.util.List<TypeAnnotationNode>` `visibleTypeAnnotations` The runtime visible type annotations of this instruction.

### Constructor Summary

Constructors
`protected` `AbstractInsnNode(int opcode)` Constructs a new `AbstractInsnNode`.

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`abstract void` `accept(MethodVisitor cv)` Makes the given code visitor visit this instruction.
`protected void` `acceptAnnotations(MethodVisitor mv)` Makes the given visitor visit the annotations of this instruction.
`abstract AbstractInsnNode` `clone(java.util.Map<LabelNode,LabelNode> labels)` Returns a copy of this instruction.
`protected AbstractInsnNode` `cloneAnnotations(AbstractInsnNode insn)` Clones the annotations of the given instruction into this instruction.
`AbstractInsnNode` `getNext()` Returns the next instruction in the list to which this instruction belongs, if any.
`int` `getOpcode()` Returns the opcode of this instruction.
`AbstractInsnNode` `getPrevious()` Returns the previous instruction in the list to which this instruction belongs, if any.
`abstract int` `getType()` Returns the type of this instruction.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### INSN

    public static final int INSN

The type of `InsnNode` instructions.

See Also:
  Constant Field Values

#### INT_INSN

    public static final int INT_INSN

The type of `IntInsnNode` instructions.

See Also:
  Constant Field Values

#### VAR_INSN

    public static final int VAR_INSN

The type of `VarInsnNode` instructions.

See Also:
  Constant Field Values

#### TYPE_INSN

    public static final int TYPE_INSN

The type of `TypeInsnNode` instructions.

See Also:
  Constant Field Values

#### FIELD_INSN

    public static final int FIELD_INSN

The type of `FieldInsnNode` instructions.

See Also:
  Constant Field Values

#### METHOD_INSN

    public static final int METHOD_INSN

The type of `MethodInsnNode` instructions.

See Also:
  Constant Field Values

#### INVOKE_DYNAMIC_INSN

    public static final int INVOKE_DYNAMIC_INSN

The type of `InvokeDynamicInsnNode` instructions.

See Also:
  Constant Field Values

#### JUMP_INSN

    public static final int JUMP_INSN

The type of `JumpInsnNode` instructions.

See Also:
  Constant Field Values

#### LABEL

    public static final int LABEL

The type of `LabelNode` "instructions".

See Also:
  Constant Field Values

#### LDC_INSN

    public static final int LDC_INSN

The type of `LdcInsnNode` instructions.

See Also:
  Constant Field Values

#### IINC_INSN

    public static final int IINC_INSN

The type of `IincInsnNode` instructions.

See Also:
  Constant Field Values

#### TABLESWITCH_INSN

    public static final int TABLESWITCH_INSN

The type of `TableSwitchInsnNode` instructions.

See Also:
  Constant Field Values

#### LOOKUPSWITCH_INSN

    public static final int LOOKUPSWITCH_INSN

The type of `LookupSwitchInsnNode` instructions.

See Also:
  Constant Field Values

#### MULTIANEWARRAY_INSN

    public static final int MULTIANEWARRAY_INSN

The type of `MultiANewArrayInsnNode` instructions.

See Also:
  Constant Field Values

#### FRAME

    public static final int FRAME

The type of `FrameNode` "instructions".

See Also:
  Constant Field Values

#### LINE

    public static final int LINE

The type of `LineNumberNode` "instructions".

See Also:
  Constant Field Values

#### opcode

    protected int opcode

The opcode of this instruction.

#### visibleTypeAnnotations

    public java.util.List<TypeAnnotationNode> visibleTypeAnnotations

The runtime visible type annotations of this instruction. This field is only used for real instructions (i.e. not for labels, frames, or line number nodes). This list is a list of `TypeAnnotationNode` objects. May be `null`.

#### invisibleTypeAnnotations

    public java.util.List<TypeAnnotationNode> invisibleTypeAnnotations

The runtime invisible type annotations of this instruction. This field is only used for real instructions (i.e. not for labels, frames, or line number nodes). This list is a list of `TypeAnnotationNode` objects. May be `null`.

### Constructor Detail

#### AbstractInsnNode

    protected AbstractInsnNode(int opcode)

Constructs a new `AbstractInsnNode`.

Parameters:
  `opcode` - the opcode of the instruction to be constructed.

### Method Detail

#### getOpcode

    public int getOpcode()

Returns the opcode of this instruction.

Returns:
  the opcode of this instruction.

#### getType

    public abstract int getType()

Returns the type of this instruction.

Returns:
  the type of this instruction, i.e. one the constants defined in this class.

#### getPrevious

    public AbstractInsnNode getPrevious()

Returns the previous instruction in the list to which this instruction belongs, if any.

Returns:
  the previous instruction in the list to which this instruction belongs, if any. May be `null`.

#### getNext

    public AbstractInsnNode getNext()

Returns the next instruction in the list to which this instruction belongs, if any.

Returns:
  the next instruction in the list to which this instruction belongs, if any. May be `null`.

#### accept

    public abstract void accept(MethodVisitor cv)

Makes the given code visitor visit this instruction.

Parameters:
  `cv` - a code visitor.

#### acceptAnnotations

    protected final void acceptAnnotations(MethodVisitor mv)

Makes the given visitor visit the annotations of this instruction.

Parameters:
  `mv` - a method visitor.

#### clone

    public abstract AbstractInsnNode clone(java.util.Map<LabelNode,LabelNode> labels)

Returns a copy of this instruction.

Parameters:
  `labels` - a map from LabelNodes to cloned LabelNodes.
Returns:
  a copy of this instruction. The returned instruction does not belong to any `InsnList`.

#### cloneAnnotations

    protected final AbstractInsnNode cloneAnnotations(AbstractInsnNode insn)

Clones the annotations of the given instruction into this instruction.

Parameters:
  `insn` - the source instruction.
Returns:
  this instruction.