package aQute.bnd.osgi;

public class OpCodes {
	final static short	nop				= 0x00;			// [No change]
														// performs
														// no
	// operation
	final static short	aconst_null		= 0x01;			// ? null pushes a
														// null
	// reference onto the stack
	final static short	iconst_m1		= 0x02;			// ? -1 loads the
														// int
														// value -1
	// onto the stack
	final static short	iconst_0		= 0x03;			// ? 0 loads the int
														// value 0
	// onto the stack
	final static short	iconst_1		= 0x04;			// ? 1 loads the int
														// value 1
	// onto the stack
	final static short	iconst_2		= 0x05;			// ? 2 loads the int
														// value 2
	// onto the stack
	final static short	iconst_3		= 0x06;			// ? 3 loads the int
														// value 3
	// onto the stack
	final static short	iconst_4		= 0x07;			// ? 4 loads the int
														// value 4
	// onto the stack
	final static short	iconst_5		= 0x08;			// ? 5 loads the int
														// value 5
	// onto the stack
	final static short	lconst_0		= 0x09;			// ? 0L pushes the
														// long
														// 0 onto
	// the stack
	final static short	bipush			= 0x10;			// byte ? value
														// pushes a
														// byte
	// onto the stack as an integer
	// value
	final static short	sipush			= 0x11;			// byte1, byte2 ?
														// value
														// pushes a
	// signed integer (byte1 << 8 +
	// byte2) onto the stack
	final static short	ldc				= 0x12;			// index ? value
														// pushes
														// a
	// constant #index from a
	// constant pool (String, int,
	// float or class type) onto the
	// stack
	final static short	ldc_w			= 0x13;			// indexbyte1,
														// indexbyte2 ?
	// value pushes a constant
	// #index from a constant pool
	// (String, int, float or class
	// type) onto the stack (wide
	// index is constructed as
	// indexbyte1 << 8 + indexbyte2)
	final static short	ldc2_w			= 0x14;			// indexbyte1,
														// indexbyte2 ?
	// value pushes a constant
	// #index from a constant pool
	// (double or long) onto the
	// stack (wide index is
	// constructed as indexbyte1 <<
	// 8 + indexbyte2)
	final static short	iload			= 0x15;			// index ? value
														// loads
														// an int
	// value from a variable #index
	final static short	lload			= 0x16;			// index ? value
														// load a
														// long
	// value from a local variable
	// #index
	final static short	fload			= 0x17;			// index ? value
														// loads a
														// float
	// value from a local variable
	// #index
	final static short	dload			= 0x18;			// index ? value
														// loads a
														// double
	// value from a local variable
	// #index
	final static short	aload			= 0x19;			// index ? objectref
														// loads a
	// reference onto the stack from
	// a local variable #index
	final static short	lload_2			= 0x20;			// ? value load a
														// long
														// value
	// from a local variable 2
	final static short	lload_3			= 0x21;			// ? value load a
														// long
														// value
	// from a local variable 3
	final static short	fload_0			= 0x22;			// ? value loads a
														// float
														// value
	// from local variable 0
	final static short	fload_1			= 0x23;			// ? value loads a
														// float
														// value
	// from local variable 1
	final static short	fload_2			= 0x24;			// ? value loads a
														// float
														// value
	// from local variable 2
	final static short	fload_3			= 0x25;			// ? value loads a
														// float
														// value
	// from local variable 3
	final static short	dload_0			= 0x26;			// ? value loads a
														// double from
	// local variable 0
	final static short	dload_1			= 0x27;			// ? value loads a
														// double from
	// local variable 1
	final static short	dload_2			= 0x28;			// ? value loads a
														// double from
	// local variable 2
	final static short	dload_3			= 0x29;			// ? value loads a
														// double from
	// local variable 3
	final static short	faload			= 0x30;			// arrayref, index ?
														// value loads
	// a float from an array
	final static short	daload			= 0x31;			// arrayref, index ?
														// value loads
	// a double from an array
	final static short	aaload			= 0x32;			// arrayref, index ?
														// value loads
	// onto the stack a reference
	// from an array
	final static short	baload			= 0x33;			// arrayref, index ?
														// value loads
	// a byte or Boolean value from
	// an array
	final static short	caload			= 0x34;			// arrayref, index ?
														// value loads
	// a char from an array
	final static short	saload			= 0x35;			// arrayref, index ?
														// value load
	// short from array
	final static short	istore			= 0x36;			// index value ?
														// store
														// int value
	// into variable #index
	final static short	lstore			= 0x37;			// index value ?
														// store a
														// long
	// value in a local variable
	// #index
	final static short	fstore			= 0x38;			// index value ?
														// stores
														// a float
	// value into a local variable
	// #index
	final static short	dstore			= 0x39;			// index value ?
														// stores
														// a double
	// value into a local variable
	// #index
	final static short	lstore_1		= 0x40;			// value ? store a
														// long
														// value in
	// a local variable 1
	final static short	lstore_2		= 0x41;			// value ? store a
														// long
														// value in
	// a local variable 2
	final static short	lstore_3		= 0x42;			// value ? store a
														// long
														// value in
	// a local variable 3
	final static short	fstore_0		= 0x43;			// value ? stores a
														// float value
	// into local variable 0
	final static short	fstore_1		= 0x44;			// value ? stores a
														// float value
	// into local variable 1
	final static short	fstore_2		= 0x45;			// value ? stores a
														// float value
	// into local variable 2
	final static short	fstore_3		= 0x46;			// value ? stores a
														// float value
	// into local variable 3
	final static short	dstore_0		= 0x47;			// value ? stores a
														// double into
	// local variable 0
	final static short	dstore_1		= 0x48;			// value ? stores a
														// double into
	// local variable 1
	final static short	dstore_2		= 0x49;			// value ? stores a
														// double into
	// local variable 2
	final static short	lastore			= 0x50;			// arrayref, index,
														// value ?
	// store a long to an array
	final static short	fastore			= 0x51;			// arreyref, index,
														// value ?
	// stores a float in an array
	final static short	dastore			= 0x52;			// arrayref, index,
														// value ?
	// stores a double into an array
	final static short	aastore			= 0x53;			// arrayref, index,
														// value ?
	// stores into a reference to an
	// array
	final static short	bastore			= 0x54;			// arrayref, index,
														// value ?
	// stores a byte or Boolean
	// value into an array
	final static short	castore			= 0x55;			// arrayref, index,
														// value ?
	// stores a char into an array
	final static short	sastore			= 0x56;			// arrayref, index,
														// value ?
	// store short to array
	final static short	pop				= 0x57;			// value ? discards
														// the
														// top
	// value on the stack
	final static short	pop2			= 0x58;			// {value2, value1}
														// ?
														// discards
	// the top two values on the
	// stack (or one value, if it is
	// a double or long)
	final static short	dup				= 0x59;			// value ? value,
														// value
	// duplicates the value on top
	// of the stack
	final static short	iadd			= 0x60;			// value1, value2 ?
														// result adds
	// two ints together
	final static short	ladd			= 0x61;			// value1, value2 ?
														// result add
	// two longs
	final static short	fadd			= 0x62;			// value1, value2 ?
														// result adds
	// two floats
	final static short	dadd			= 0x63;			// value1, value2 ?
														// result adds
	// two doubles
	final static short	isub			= 0x64;			// value1, value2 ?
														// result int
	// subtract
	final static short	lsub			= 0x65;			// value1, value2 ?
														// result
	// subtract two longs
	final static short	fsub			= 0x66;			// value1, value2 ?
														// result
	// subtracts two floats
	final static short	dsub			= 0x67;			// value1, value2 ?
														// result
	// subtracts a double from
	// another
	final static short	imul			= 0x68;			// value1, value2 ?
														// result
	// multiply two integers
	final static short	lmul			= 0x69;			// value1, value2 ?
														// result
	// multiplies two longs
	final static short	irem			= 0x70;			// value1, value2 ?
														// result
	// logical int remainder
	final static short	lrem			= 0x71;			// value1, value2 ?
														// result
	// remainder of division of two
	// longs
	final static short	frem			= 0x72;			// value1, value2 ?
														// result gets
	// the remainder from a division
	// between two floats
	final static short	drem			= 0x73;			// value1, value2 ?
														// result gets
	// the remainder from a division
	// between two doubles
	final static short	ineg			= 0x74;			// value ? result
														// negate
														// int
	final static short	lneg			= 0x75;			// value ? result
														// negates a long
	final static short	fneg			= 0x76;			// value ? result
														// negates a
	// float
	final static short	dneg			= 0x77;			// value ? result
														// negates a
	// double
	final static short	ishl			= 0x78;			// value1, value2 ?
														// result int
	// shift left
	final static short	lshl			= 0x79;			// value1, value2 ?
														// result
	// bitwise shift left of a long
	// value1 by value2 positions
	final static short	ior				= 0x80;			// value1, value2 ?
														// result
	// logical int or
	final static short	lor				= 0x81;			// value1, value2 ?
														// result
	// bitwise or of two longs
	final static short	ixor			= 0x82;			// value1, value2 ?
														// result int
	// xor
	final static short	lxor			= 0x83;			// value1, value2 ?
														// result
	// bitwise exclusive or of two
	// longs
	final static short	iinc			= 0x84;			// index, const [No
														// change]
	// increment local variable
	// #index by signed byte const
	final static short	i2l				= 0x85;			// value ? result
														// converts an
	// int into a long
	final static short	i2f				= 0x86;			// value ? result
														// converts an
	// int into a float
	final static short	i2d				= 0x87;			// value ? result
														// converts an
	// int into a double
	final static short	l2i				= 0x88;			// value ? result
														// converts a
	// long to an int
	final static short	l2f				= 0x89;			// value ? result
														// converts a
	// long to a float
	final static short	d2f				= 0x90;			// value ? result
														// converts a
	// double to a float
	final static short	i2b				= 0x91;			// value ? result
														// converts an
	// int into a byte
	final static short	i2c				= 0x92;			// value ? result
														// converts an
	// int into a character
	final static short	i2s				= 0x93;			// value ? result
														// converts an
	// int into a short
	final static short	lcmp			= 0x94;			// value1, value2 ?
														// result
	// compares two longs values
	final static short	fcmpl			= 0x95;			// value1, value2 ?
														// result
	// compares two floats
	final static short	fcmpg			= 0x96;			// value1, value2 ?
														// result
	// compares two floats
	final static short	dcmpl			= 0x97;			// value1, value2 ?
														// result
	// compares two doubles
	final static short	dcmpg			= 0x98;			// value1, value2 ?
														// result
	// compares two doubles
	final static short	ifeq			= 0x99;			// branchbyte1,
														// branchbyte2
	// value ? if value is 0, branch
	// to instruction at
	// branchoffset (signed short
	// constructed from unsigned
	// bytes branchbyte1 << 8 +
	// branchbyte2)
	final static short	lconst_1		= 0x0a;			// ? 1L pushes the
														// long
														// 1 onto
	// the stack
	final static short	fconst_0		= 0x0b;			// ? 0.0f pushes
														// 0.0f on
														// the
	// stack
	final static short	fconst_1		= 0x0c;			// ? 1.0f pushes
														// 1.0f on
														// the
	// stack
	final static short	fconst_2		= 0x0d;			// ? 2.0f pushes
														// 2.0f on
														// the
	// stack
	final static short	dconst_0		= 0x0e;			// ? 0.0 pushes the
														// constant 0.0
	// onto the stack
	final static short	dconst_1		= 0x0f;			// ? 1.0 pushes the
														// constant 1.0
	// onto the stack
	final static short	iload_0			= 0x1a;			// ? value loads an
														// int
														// value
	// from variable 0
	final static short	iload_1			= 0x1b;			// ? value loads an
														// int
														// value
	// from variable 1
	final static short	iload_2			= 0x1c;			// ? value loads an
														// int
														// value
	// from variable 2
	final static short	iload_3			= 0x1d;			// ? value loads an
														// int
														// value
	// from variable 3
	final static short	lload_0			= 0x1e;			// ? value load a
														// long
														// value
	// from a local variable 0
	final static short	lload_1			= 0x1f;			// ? value load a
														// long
														// value
	// from a local variable 1
	final static short	aload_0			= 0x2a;			// ? objectref loads
														// a
														// reference
	// onto the stack from local
	// variable 0
	final static short	aload_1			= 0x2b;			// ? objectref loads
														// a
														// reference
	// onto the stack from local
	// variable 1
	final static short	aload_2			= 0x2c;			// ? objectref loads
														// a
														// reference
	// onto the stack from local
	// variable 2
	final static short	aload_3			= 0x2d;			// ? objectref loads
														// a
														// reference
	// onto the stack from local
	// variable 3
	final static short	iaload			= 0x2e;			// arrayref, index ?
														// value loads
	// an int from an array
	final static short	laload			= 0x2f;			// arrayref, index ?
														// value load
	// a long from an array
	final static short	astore			= 0x3a;			// index objectref ?
														// stores a
	// reference into a local
	// variable #index
	final static short	istore_0		= 0x3b;			// value ? store int
														// value into
	// variable 0
	final static short	istore_1		= 0x3c;			// value ? store int
														// value into
	// variable 1
	final static short	istore_2		= 0x3d;			// value ? store int
														// value into
	// variable 2
	final static short	istore_3		= 0x3e;			// value ? store int
														// value into
	// variable 3
	final static short	lstore_0		= 0x3f;			// value ? store a
														// long
														// value in
	// a local variable 0
	final static short	dstore_3		= 0x4a;			// value ? stores a
														// double into
	// local variable 3
	final static short	astore_0		= 0x4b;			// objectref ?
														// stores a
	// reference into local variable
	// 0
	final static short	astore_1		= 0x4c;			// objectref ?
														// stores a
	// reference into local variable
	// 1
	final static short	astore_2		= 0x4d;			// objectref ?
														// stores a
	// reference into local variable
	// 2
	final static short	astore_3		= 0x4e;			// objectref ?
														// stores a
	// reference into local variable
	// 3
	final static short	iastore			= 0x4f;			// arrayref, index,
														// value ?
	// stores an int into an array
	final static short	dup_x1			= 0x5a;			// value2, value1 ?
														// value1,
	// value2, value1 inserts a copy
	// of the top value into the
	// stack two values from the top
	final static short	dup_x2			= 0x5b;			// value3, value2,
														// value1 ?
	// value1, value3, value2,
	// value1 inserts a copy of the
	// top value into the stack two
	// (if value2 is double or long
	// it takes up the entry of
	// value3, too) or three values
	// (if value2 is neither double
	// nor long) from the top
	final static short	dup2			= 0x5c;			// {value2, value1}
														// ?
														// {value2,
	// value1}, {value2, value1}
	// duplicate top two stack words
	// (two values, if value1 is not
	// double nor long; a single
	// value, if value1 is double or
	// long)
	final static short	dup2_x1			= 0x5d;			// value3, {value2,
														// value1} ?
	// {value2, value1}, value3,
	// {value2, value1} duplicate
	// two words and insert beneath
	// third word (see explanation
	// above)
	final static short	dup2_x2			= 0x5e;			// {value4, value3},
														// {value2,
	// value1} ? {value2, value1},
	// {value4, value3}, {value2,
	// value1} duplicate two words
	// and insert beneath fourth
	// word
	final static short	swap			= 0x5f;			// value2, value1 ?
														// value1,
	// value2 swaps two top words on
	// the stack (note that value1
	// and value2 must not be double
	// or long)
	final static short	fmul			= 0x6a;			// value1, value2 ?
														// result
	// multiplies two floats
	final static short	dmul			= 0x6b;			// value1, value2 ?
														// result
	// multiplies two doubles
	final static short	idiv			= 0x6c;			// value1, value2 ?
														// result
	// divides two integers
	final static short	ldiv			= 0x6d;			// value1, value2 ?
														// result
	// divide two longs
	final static short	fdiv			= 0x6e;			// value1, value2 ?
														// result
	// divides two floats
	final static short	ddiv			= 0x6f;			// value1, value2 ?
														// result
	// divides two doubles
	final static short	ishr			= 0x7a;			// value1, value2 ?
														// result int
	// shift right
	final static short	lshr			= 0x7b;			// value1, value2 ?
														// result
	// bitwise shift right of a long
	// value1 by value2 positions
	final static short	iushr			= 0x7c;			// value1, value2 ?
														// result int
	// shift right
	final static short	lushr			= 0x7d;			// value1, value2 ?
														// result
	// bitwise shift right of a long
	// value1 by value2 positions,
	// unsigned
	final static short	iand			= 0x7e;			// value1, value2 ?
														// result
	// performs a logical and on two
	// integers
	final static short	land			= 0x7f;			// value1, value2 ?
														// result
	// bitwise and of two longs
	final static short	l2d				= 0x8a;			// value ? result
														// converts a
	// long to a double
	final static short	f2i				= 0x8b;			// value ? result
														// converts a
	// float to an int
	final static short	f2l				= 0x8c;			// value ? result
														// converts a
	// float to a long
	final static short	f2d				= 0x8d;			// value ? result
														// converts a
	// float to a double
	final static short	d2i				= 0x8e;			// value ? result
														// converts a
	// double to an int
	final static short	d2l				= 0x8f;			// value ? result
														// converts a
	// double to a long
	final static short	ifne			= 0x9a;			// branchbyte1,
														// branchbyte2
	// value ? if value is not 0,
	// branch to instruction at
	// branchoffset (signed short
	// constructed from unsigned
	// bytes branchbyte1 << 8 +
	// branchbyte2)
	final static short	iflt			= 0x9b;			// branchbyte1,
														// branchbyte2
	// value ? if value is less than
	// 0, branch to instruction at
	// branchoffset (signed short
	// constructed from unsigned
	// bytes branchbyte1 << 8 +
	// branchbyte2)
	final static short	ifge			= 0x9c;			// branchbyte1,
														// branchbyte2
	// value ? if value is greater
	// than or equal to 0, branch to
	// instruction at branchoffset
	// (signed short constructed
	// from unsigned bytes
	// branchbyte1 << 8 +
	// branchbyte2)
	final static short	ifgt			= 0x9d;			// branchbyte1,
														// branchbyte2
	// value ? if value is greater
	// than 0, branch to instruction
	// at branchoffset (signed short
	// constructed from unsigned
	// bytes branchbyte1 << 8 +
	// branchbyte2)
	final static short	ifle			= 0x9e;			// branchbyte1,
														// branchbyte2
	// value ? if value is less than
	// or equal to 0, branch to
	// instruction at branchoffset
	// (signed short constructed
	// from unsigned bytes
	// branchbyte1 << 8 +
	// branchbyte2)
	final static short	if_icmpeq		= 0x9f;			// branchbyte1,
														// branchbyte2
	// value1, value2 ? if ints are
	// equal, branch to instruction
	// at branchoffset (signed short
	// constructed from unsigned
	// bytes branchbyte1 << 8 +
	// branchbyte2)
	final static short	if_icmpne		= 0xa0;			// branchbyte1,
														// branchbyte2
	// value1, value2 ? if ints are
	// not equal, branch to
	// instruction at branchoffset
	// (signed short constructed
	// from unsigned bytes
	// branchbyte1 << 8 +
	// branchbyte2)
	final static short	if_icmplt		= 0xa1;			// branchbyte1,
														// branchbyte2
	// value1, value2 ? if value1 is
	// less than value2, branch to
	// instruction at branchoffset
	// (signed short constructed
	// from unsigned bytes
	// branchbyte1 << 8 +
	// branchbyte2)
	final static short	if_icmpge		= 0xa2;			// branchbyte1,
														// branchbyte2
	// value1, value2 ? if value1 is
	// greater than or equal to
	// value2, branch to instruction
	// at branchoffset (signed short
	// constructed from unsigned
	// bytes branchbyte1 << 8 +
	// branchbyte2)
	final static short	if_icmpgt		= 0xa3;			// branchbyte1,
														// branchbyte2
	// value1, value2 ? if value1 is
	// greater than value2, branch
	// to instruction at
	// branchoffset (signed short
	// constructed from unsigned
	// bytes branchbyte1 << 8 +
	// branchbyte2)
	final static short	if_icmple		= 0xa4;			// branchbyte1,
														// branchbyte2
	// value1, value2 ? if value1 is
	// less than or equal to value2,
	// branch to instruction at
	// branchoffset (signed short
	// constructed from unsigned
	// bytes branchbyte1 << 8 +
	// branchbyte2)
	final static short	if_acmpeq		= 0xa5;			// branchbyte1,
														// branchbyte2
	// value1, value2 ? if
	// references are equal, branch
	// to instruction at
	// branchoffset (signed short
	// constructed from unsigned
	// bytes branchbyte1 << 8 +
	// branchbyte2)
	final static short	if_acmpne		= 0xa6;			// branchbyte1,
														// branchbyte2
	// value1, value2 ? if
	// references are not equal,
	// branch to instruction at
	// branchoffset (signed short
	// constructed from unsigned
	// bytes branchbyte1 << 8 +
	// branchbyte2)
	final static short	goto_			= 0xa7;			// branchbyte1,
														// branchbyte2 [no
	// change] goes to another
	// instruction at branchoffset
	// (signed short constructed
	// from unsigned bytes
	// branchbyte1 << 8 +
	// branchbyte2)
	final static short	jsr				= 0xa8;			// branchbyte1,
														// branchbyte2 ?
	// address jump to subroutine at
	// branchoffset (signed short
	// constructed from unsigned
	// bytes branchbyte1 << 8 +
	// branchbyte2) and place the
	// return address on the stack
	final static short	ret				= 0xa9;			// index [No change]
														// continue
	// execution from address taken
	// from a local variable #index
	// (the asymmetry with jsr is
	// intentional)
	final static short	tableswitch		= 0xaa;			// [0-3 bytes
														// padding],
	// defaultbyte1, defaultbyte2,
	// defaultbyte3, defaultbyte4,
	// lowbyte1, lowbyte2, lowbyte3,
	// lowbyte4, highbyte1,
	// highbyte2, highbyte3,
	// highbyte4, jump offsets...
	// index ? continue execution
	// from an address in the table
	// at offset index
	final static short	lookupswitch	= 0xab;			// <0-3 bytes
														// padding>,
	// defaultbyte1, defaultbyte2,
	// defaultbyte3, defaultbyte4,
	// npairs1, npairs2, npairs3,
	// npairs4, match-offset
	// pairs... key ? a target
	// address is looked up from a
	// table using a key and
	// execution continues from the
	// instruction at that address
	final static short	ireturn			= 0xac;			// value ? [empty]
														// returns an
	// integer from a method
	final static short	lreturn			= 0xad;			// value ? [empty]
														// returns a
	// long value
	final static short	freturn			= 0xae;			// value ? [empty]
														// returns a
	// float
	final static short	dreturn			= 0xaf;			// value ? [empty]
														// returns a
	// double from a method
	final static short	areturn			= 0xb0;			// objectref ?
														// [empty]
														// returns a
	// reference from a method
	final static short	return_			= 0xb1;			// ? [empty] return
														// void
														// from
	// method
	final static short	getstatic		= 0xb2;			// index1, index2 ?
														// value gets a
	// static field value of a
	// class, where the field is
	// identified by field reference
	// in the constant pool index
	// (index1 << 8 + index2)
	final static short	putstatic		= 0xb3;			// indexbyte1,
														// indexbyte2 value
	// ? set static field to value
	// in a class, where the field
	// is identified by a field
	// reference index in constant
	// pool (indexbyte1 << 8 +
	// indexbyte2)
	final static short	getfield		= 0xb4;			// index1, index2
														// objectref ?
	// value gets a field value of
	// an object objectref, where
	// the field is identified by
	// field reference in the
	// constant pool index (index1
	// << 8 + index2)
	final static short	putfield		= 0xb5;			// indexbyte1,
														// indexbyte2
	// objectref, value ? set field
	// to value in an object
	// objectref, where the field is
	// identified by a field
	// reference index in constant
	// pool (indexbyte1 << 8 +
	// indexbyte2)
	final static short	invokevirtual	= 0xb6;			// indexbyte1,
														// indexbyte2
	// objectref, [arg1, arg2, ...]
	// ? invoke virtual method on
	// object objectref, where the
	// method is identified by
	// method reference index in
	// constant pool (indexbyte1 <<
	// 8 + indexbyte2)
	final static short	invokespecial	= 0xb7;			// indexbyte1,
														// indexbyte2
	// objectref, [arg1, arg2, ...]
	// ? invoke instance method on
	// object objectref, where the
	// method is identified by
	// method reference index in
	// constant pool (indexbyte1 <<
	// 8 + indexbyte2)
	final static short	invokestatic	= 0xb8;			// indexbyte1,
														// indexbyte2 [arg1,
	// arg2, ...] ? invoke a static
	// method, where the method is
	// identified by method
	// reference index in constant
	// pool (indexbyte1 << 8 +
	// indexbyte2)
	final static short	invokeinterface	= 0xb9;			// indexbyte1,
														// indexbyte2,
	// count, 0 objectref, [arg1,
	// arg2, ...] ? invokes an
	// interface method on object
	// objectref, where the
	// interface method is
	// identified by method
	// reference index in constant
	// pool (indexbyte1 << 8 +
	// indexbyte2)
	final static short	invokedynamic	= 0xba;			// introduced in J7

	final static short	new_			= 0xbb;			// indexbyte1,
														// indexbyte2 ?
	// objectref creates new object
	// of type identified by class
	// reference in constant pool
	// index (indexbyte1 << 8 +
	// indexbyte2)
	final static short	newarray		= 0xbc;			// atype count ?
														// arrayref
	// creates new array with count
	// elements of primitive type
	// identified by atype
	final static short	anewarray		= 0xbd;			// indexbyte1,
														// indexbyte2 count
	// ? arrayref creates a new
	// array of references of length
	// count and component type
	// identified by the class
	// reference index (indexbyte1
	// << 8 + indexbyte2) in the
	// constant pool
	final static short	arraylength		= 0xbe;			// arrayref ? length
														// gets the
	// length of an array
	final static short	athrow			= 0xbf;			// objectref ?
														// [empty],
	// objectref throws an error or
	// exception (notice that the
	// rest of the stack is cleared,
	// leaving only a reference to
	// the Throwable)
	final static short	checkcast		= 0xc0;			// indexbyte1,
														// indexbyte2
	// objectref ? objectref checks
	// whether an objectref is of a
	// certain type, the class
	// reference of which is in the
	// constant pool at index
	// (indexbyte1 << 8 +
	// indexbyte2)
	final static short	instanceof_		= 0xc1;			// indexbyte1,
														// indexbyte2
	// objectref ? result determines
	// if an object objectref is of
	// a given type, identified by
	// class reference index in
	// constant pool (indexbyte1 <<
	// 8 + indexbyte2)
	final static short	monitorenter	= 0xc2;			// objectref ? enter
														// monitor for
	// object ("grab the lock" -
	// start of synchronized()
	// section)
	final static short	monitorexit		= 0xc3;			// objectref ? exit
														// monitor for
	// object ("release the lock" -
	// end of synchronized()
	// section)
	final static short	wide			= 0xc4;			// opcode,
														// indexbyte1,
	// indexbyte2
	final static short	multianewarray	= 0xc5;			// indexbyte1,
														// indexbyte2,
	// dimensions count1,
	// [count2,...] ? arrayref
	// create a new array of
	// dimensions dimensions with
	// elements of type identified
	// by class reference in
	// constant pool index
	// (indexbyte1 << 8 +
	// indexbyte2); the sizes of
	// each dimension is identified
	// by count1, [count2, etc]
	final static short	ifnull			= 0xc6;			// branchbyte1,
														// branchbyte2
	// value ? if value is null,
	// branch to instruction at
	// branchoffset (signed short
	// constructed from unsigned
	// bytes branchbyte1 << 8 +
	// branchbyte2)
	final static short	ifnonnull		= 0xc7;			// branchbyte1,
														// branchbyte2
	// value ? if value is not null,
	// branch to instruction at
	// branchoffset (signed short
	// constructed from unsigned
	// bytes branchbyte1 << 8 +
	// branchbyte2)
	final static short	goto_w			= 0xc8;			// branchbyte1,
														// branchbyte2,
	// branchbyte3, branchbyte4 [no
	// change] goes to another
	// instruction at branchoffset
	// (signed int constructed from
	// unsigned bytes branchbyte1 <<
	// 24 + branchbyte2 << 16 +
	// branchbyte3 << 8 +
	// branchbyte4)
	final static short	jsr_w			= 0xc9;			// branchbyte1,
														// branchbyte2,
	// branchbyte3, branchbyte4 ?
	// address jump to subroutine at
	// branchoffset (signed int
	// constructed from unsigned
	// bytes branchbyte1 << 24 +
	// branchbyte2 << 16 +
	// branchbyte3 << 8 +
	// branchbyte4) and place the
	// return address on the stack
	final static short	breakpoint		= 0xca;			// reserved for
														// breakpoints in
	// Java debuggers; should not
	// appear in any class file
	final static short	impdep1			= 0xfe;			// reserved for
	// implementation-dependent
	// operations within debuggers;
	// should not appear in any
	// class file
	final static short	impdep2			= 0xff;			// reserved for
	// implementation-dependent
	// operations within debuggers;
	// should not appear in any
	// class file

	final static byte	OFFSETS[]		= new byte[256];

	static {
		OFFSETS[bipush] = 1; // byte ? value pushes a byte onto the
		// stack as an integer value
		OFFSETS[sipush] = 2; // byte1, byte2 ? value pushes a signed
		// integer (byte1 << 8 + byte2) onto the
		// stack
		OFFSETS[ldc] = 1; // index ? value pushes a constant
		// #index from a constant pool (String,
		// int, float or class type) onto the
		// stack
		OFFSETS[ldc_w] = 2; // indexbyte1, indexbyte2 ? value pushes
		// a constant #index from a constant
		// pool (String, int, float or class
		// type) onto the stack (wide index is
		// constructed as indexbyte1 << 8 +
		// indexbyte2)
		OFFSETS[ldc2_w] = 2; // indexbyte1, indexbyte2 ? value pushes
		// a constant #index from a constant
		// pool (double or long) onto the stack
		// (wide index is constructed as
		// indexbyte1 << 8 + indexbyte2)
		OFFSETS[iload] = 1; // index ? value loads an int value from
		// a variable #index
		OFFSETS[lload] = 1; // index ? value load a long value from
		// a local variable #index
		OFFSETS[fload] = 1; // index ? value loads a float value
		// from a local variable #index
		OFFSETS[dload] = 1; // index ? value loads a double value
		// from a local variable #index
		OFFSETS[aload] = 1; // index ? objectref loads a reference
		// onto the stack from a local variable
		// #index
		OFFSETS[istore] = 1; // index value ? store int value into
		// variable #index
		OFFSETS[lstore] = 1; // index value ? store a long value in a
		// local variable #index
		OFFSETS[fstore] = 1; // index value ? stores a float value
		// into a local variable #index
		OFFSETS[dstore] = 1; // index value ? stores a double value
		// into a local variable #index
		OFFSETS[iinc] = 2; // index, const [No change] increment
		// local variable #index by signed byte
		// const
		OFFSETS[ifeq] = 2; // branchbyte1, branchbyte2 value ? if
		// value is 0, branch to instruction at
		// branchoffset (signed short
		// constructed from unsigned bytes
		// branchbyte1 << 8 + branchbyte2)
		OFFSETS[astore] = 1; // index objectref ? stores a reference
		// into a local variable #index
		OFFSETS[ifne] = 2; // branchbyte1, branchbyte2 value ? if
		// value is not 0, branch to instruction
		// at branchoffset (signed short
		// constructed from unsigned bytes
		// branchbyte1 << 8 + branchbyte2)
		OFFSETS[iflt] = 2; // branchbyte1, branchbyte2 value ? if
		// value is less than 0, branch to
		// instruction at branchoffset (signed
		// short constructed from unsigned bytes
		// branchbyte1 << 8 + branchbyte2)
		OFFSETS[ifge] = 2; // branchbyte1, branchbyte2 value ? if
		// value is greater than or equal to 0,
		// branch to instruction at branchoffset
		// (signed short constructed from
		// unsigned bytes branchbyte1 << 8 +
		// branchbyte2)
		OFFSETS[ifgt] = 2; // branchbyte1, branchbyte2 value ? if
		// value is greater than 0, branch to
		// instruction at branchoffset (signed
		// short constructed from unsigned bytes
		// branchbyte1 << 8 + branchbyte2)
		OFFSETS[ifle] = 2; // branchbyte1, branchbyte2 value ? if
		// value is less than or equal to 0,
		// branch to instruction at branchoffset
		// (signed short constructed from
		// unsigned bytes branchbyte1 << 8 +
		// branchbyte2)
		OFFSETS[if_icmpeq] = 2; // branchbyte1, branchbyte2 value1,
		// value2 ? if ints are equal,
		// branch to instruction at
		// branchoffset (signed short
		// constructed from unsigned bytes
		// branchbyte1 << 8 + branchbyte2)
		OFFSETS[if_icmpne] = 2; // branchbyte1, branchbyte2 value1,
		// value2 ? if ints are not equal,
		// branch to instruction at
		// branchoffset (signed short
		// constructed from unsigned bytes
		// branchbyte1 << 8 + branchbyte2)
		OFFSETS[if_icmplt] = 2; // branchbyte1, branchbyte2 value1,
		// value2 ? if value1 is less than
		// value2, branch to instruction at
		// branchoffset (signed short
		// constructed from unsigned bytes
		// branchbyte1 << 8 + branchbyte2)
		OFFSETS[if_icmpge] = 2; // branchbyte1, branchbyte2 value1,
		// value2 ? if value1 is greater
		// than or equal to value2, branch
		// to instruction at branchoffset
		// (signed short constructed from
		// unsigned bytes branchbyte1 << 8 +
		// branchbyte2)
		OFFSETS[if_icmpgt] = 2; // branchbyte1, branchbyte2 value1,
		// value2 ? if value1 is greater
		// than value2, branch to
		// instruction at branchoffset
		// (signed short constructed from
		// unsigned bytes branchbyte1 << 8 +
		// branchbyte2)
		OFFSETS[if_icmple] = 2; // branchbyte1, branchbyte2 value1,
		// value2 ? if value1 is less than
		// or equal to value2, branch to
		// instruction at branchoffset
		// (signed short constructed from
		// unsigned bytes branchbyte1 << 8 +
		// branchbyte2)
		OFFSETS[if_acmpeq] = 2; // branchbyte1, branchbyte2 value1,
		// value2 ? if references are equal,
		// branch to instruction at
		// branchoffset (signed short
		// constructed from unsigned bytes
		// branchbyte1 << 8 + branchbyte2)
		OFFSETS[if_acmpne] = 2; // branchbyte1, branchbyte2 value1,
		// value2 ? if references are not
		// equal, branch to instruction at
		// branchoffset (signed short
		// constructed from unsigned bytes
		// branchbyte1 << 8 + branchbyte2)
		OFFSETS[goto_] = 2; // branchbyte1, branchbyte2 [no change]
		// goes to another instruction at
		// branchoffset (signed short
		// constructed from unsigned bytes
		// branchbyte1 << 8 + branchbyte2)
		OFFSETS[jsr] = 2; // branchbyte1, branchbyte2 ? address
		// jump to subroutine at branchoffset
		// (signed short constructed from
		// unsigned bytes branchbyte1 << 8 +
		// branchbyte2) and place the return
		// address on the stack
		OFFSETS[ret] = 1; // index [No change] continue execution
		// from address taken from a local
		// variable #index (the asymmetry with
		// jsr is intentional)
		OFFSETS[tableswitch] = -1; // [0-3 bytes padding],
		// defaultbyte1, defaultbyte2,
		// defaultbyte3, defaultbyte4,
		// lowbyte1, lowbyte2, lowbyte3,
		// lowbyte4, highbyte1,
		// highbyte2, highbyte3,
		// highbyte4, jump offsets...
		// index ? continue execution
		// from an address in the table
		// at offset index
		OFFSETS[lookupswitch] = -1; // <0-3 bytes padding>,
		// defaultbyte1, defaultbyte2,
		// defaultbyte3, defaultbyte4,
		// npairs1, npairs2, npairs3,
		// npairs4, match-offset
		// pairs... key ? a target
		// address is looked up from a
		// table using a key and
		// execution continues from the
		// instruction at that address
		OFFSETS[getstatic] = 2; // index1, index2 ? value gets a
		// static field value of a class,
		// where the field is identified by
		// field reference in the constant
		// pool index (index1 << 8 + index2)
		OFFSETS[putstatic] = 2; // indexbyte1, indexbyte2 value ?
		// set static field to value in a
		// class, where the field is
		// identified by a field reference
		// index in constant pool
		// (indexbyte1 << 8 + indexbyte2)
		OFFSETS[getfield] = 2; // index1, index2 objectref ? value
		// gets a field value of an object
		// objectref, where the field is
		// identified by field reference in
		// the constant pool index (index1
		// << 8 + index2)
		OFFSETS[putfield] = 2; // indexbyte1, indexbyte2 objectref,
		// value ? set field to value in an
		// object objectref, where the field
		// is identified by a field
		// reference index in constant pool
		// (indexbyte1 << 8 + indexbyte2)
		OFFSETS[invokevirtual] = 2; // indexbyte1, indexbyte2
		// objectref, [arg1, arg2, ...]
		// ? invoke virtual method on
		// object objectref, where the
		// method is identified by
		// method reference index in
		// constant pool (indexbyte1 <<
		// 8 + indexbyte2)
		OFFSETS[invokespecial] = 2; // indexbyte1, indexbyte2
		// objectref, [arg1, arg2, ...]
		// ? invoke instance method on
		// object objectref, where the
		// method is identified by
		// method reference index in
		// constant pool (indexbyte1 <<
		// 8 + indexbyte2)
		OFFSETS[invokestatic] = 2; // indexbyte1, indexbyte2 [arg1,
		// arg2, ...] ? invoke a static
		// method, where the method is
		// identified by method
		// reference index in constant
		// pool (indexbyte1 << 8 +
		// indexbyte2)
		OFFSETS[invokeinterface] = 2; // indexbyte1, indexbyte2,
		// count, 0 objectref,
		// [arg1, arg2, ...] ?
		// invokes an interface
		// method on object
		// objectref, where the
		// interface method is
		// identified by method
		// reference index in
		// constant pool (indexbyte1
		// << 8 + indexbyte2)

		OFFSETS[invokedynamic] = 4; // 4: indexbyte1, indexbyte2, 0, 0

		OFFSETS[new_] = 2; // indexbyte1, indexbyte2 ? objectref
		// creates new object of type identified
		// by class reference in constant pool
		// index (indexbyte1 << 8 + indexbyte2)
		OFFSETS[newarray] = 1; // atype count ? arrayref creates
		// new array with count elements of
		// primitive type identified by
		// atype
		OFFSETS[anewarray] = 2; // indexbyte1, indexbyte2 count ?
		// arrayref creates a new array of
		// references of length count and
		// component type identified by the
		// class reference index (indexbyte1
		// << 8 + indexbyte2) in the
		// constant pool
		OFFSETS[checkcast] = 2; // indexbyte1, indexbyte2 objectref
		// ? objectref checks whether an
		// objectref is of a certain type,
		// the class reference of which is
		// in the constant pool at index
		// (indexbyte1 << 8 + indexbyte2)
		OFFSETS[instanceof_] = 2; // indexbyte1, indexbyte2 objectref
		// ? result determines if an object
		// objectref is of a given type,
		// identified by class reference
		// index in constant pool
		// (indexbyte1 << 8 + indexbyte2)
		OFFSETS[wide] = 3; // opcode, indexbyte1, indexbyte2
		OFFSETS[multianewarray] = 3; // indexbyte1, indexbyte2,
		// dimensions count1,
		// [count2,...] ? arrayref
		// create a new array of
		// dimensions dimensions with
		// elements of type identified
		// by class reference in
		// constant pool index
		// (indexbyte1 << 8 +
		// indexbyte2); the sizes of
		// each dimension is identified
		// by count1, [count2, etc]
		OFFSETS[ifnull] = 2; // branchbyte1, branchbyte2 value ? if
		// value is null, branch to instruction
		// at branchoffset (signed short
		// constructed from unsigned bytes
		// branchbyte1 << 8 + branchbyte2)
		OFFSETS[ifnonnull] = 2; // branchbyte1, branchbyte2 value ?
		// if value is not null, branch to
		// instruction at branchoffset
		// (signed short constructed from
		// unsigned bytes branchbyte1 << 8 +
		// branchbyte2)
		OFFSETS[goto_w] = 4; // branchbyte1, branchbyte2,
		// branchbyte3, branchbyte4 [no change]
		// goes to another instruction at
		// branchoffset (signed int constructed
		// from unsigned bytes branchbyte1 << 24
		// + branchbyte2 << 16 + branchbyte3 <<
		// 8 + branchbyte4)
		OFFSETS[jsr_w] = 4; // branchbyte1, branchbyte2,
		// branchbyte3, branchbyte4 ? address
		// jump to subroutine at branchoffset
		// (signed int constructed from unsigned
		// bytes branchbyte1 << 24 + branchbyte2
		// << 16 + branchbyte3 << 8 +
		// branchbyte4) and place the return
		// address on the stack
	}

}
