--------
- NOTES
--------

The followings are random notes about BytecodeVerification testing methods.


Each testing method has the form bytecode_verification_<instruction>[_type] where
	<instruction> is the name of the instruction tested (ex: fstore_1)
	[_type] is the optional type of the instruction, this field is use for the instructions baload, bastore, ldc, getfield, 
		getstatic, multianewarray, newarray, putfield and putstatic. Note that the getfield, getstatic, multianewarray
		newarray, putfield and putstatic use [_type] as object in their reference form (i.e. public static Object 
		bytecode_verification_getfield_object). Getfield, getstatic, putfield and putstatic use [_type] as array in their
		array form (i.e. public static Object[] bytecode_verification_getfield_array)

The following instructions do not have a specific method to test them: areturn, athrow, dreturn, freturn, ireturn, lreturn,
invokeinterface, invokespecial, invokestatic, invokevirtual, jsr, jsr_w, ret, return

Each instruction requiring a non-array reference is passed a reference to java.lang.Object.

The instructions requiering a field reference access a field from BytecodeVerificationFields named a<type>, or an<type> where
	<type> is the type of the field needed (i.e. int, Float, etc). The instruction requirering a reference type field
	acces the fields anObject and anArray which are referencing respectively a java.lang.Object and an array of 
	java.lang.Object

Each instruction requiring a non-type-specific array reference is passed a reference to an array of java.lang.Object

The bipush instruction returns the value -86 (0xAA)

The sipush instruction returns the value 170 (0xAA)

The methods testing the checkcast and instanceof instructions return 1 if the reference is an instance of java.lang.Object
otherwise the method testing checkcast throws a ClassCastException and the method testing instanceof returns 0

Each load instruction in generic format (i.e. fload <op>, not fload_1), including the wide format (wide fload <op>) take
the parameter 0 and thus is equivalent to the non-generic <type>load_0 instruction

Each store instruction in generic format (i.e. fstore <op>, not fstore_1), including the wide format (wide fstore <op>) take
the parameter 1 and thus is equivalent to the non-generic <type>store_1 instruction except the dstore and lstore instructions 
which take the parameter 0 and thus are equivalent to the non-generic dstore_0 and lstore_0

Each instructions of the dup family are tested with integer values. These methods return the integer value 1 when correctly 
implemented or else return the integer value 0

Each instructions of the dup2 family are tested with long and integer values. These methods return the integer value 1 when 
correctly implemented or else return the integer value 0 or throw an exception

Each branching instruction returns the integer value 1 when branching, or else return the integer value 0

The methods testing iinc and wide iinc add 1 to the value passed in parameter and returns it

There are 3 methods testing the ldc and ldc_w instructions, returning an int value (1) named bytecode_verification_ldc_int and
bytecode_verification_ldc_w_int, a float value (1.0) named bytecode_verification_ldc_float and bytecode_verification_ldc_w_float
and a java.lang.String value ("Hello World!") named bytecode_verification_ldc_Ljava/lang/String and
bytecode_verification_ldc_w_Ljava/lang/String

There are 2 methods testing the instruction ldc2_w  returning a long value (1) named bytecode_verification_ldc2_w_long
bytecode_verification_ldc_ and a double value (1.0) named bytecode_verification_ldc2_w_double

The methods testing the multianewarray instruction return a 2 dimensions array their respective type

The methods testing the pop and pop2 instructions return the value of their first parameter when correctly implemented or else 
return the value of their second parameter
