Method name is myMethod
 Declaring class is Target
 Arg 0: int
 Exc 0: java.lang.NullPointerException
 Exc 1: java.io.IOException
 Return type is int
 Access flags are 0x1
Method name is myMethod
 Declaring class is SuperTarget
 Arg 0: float
 Return type is int
 Access flags are 0x1
Method name is myNoargMethod
 Declaring class is Target
 Return type is void
 Access flags are 0x9
Method name is myMethod
 Declaring class is Target
 Arg 0: [Ljava.lang.String;
 Arg 1: float
 Arg 2: char
 Return type is int
 Access flags are 0x1
SuperTarget constructor ()V
Target constructor ()V
Before, float is 3.1415925
myMethod: hi there 3.1415925 Q !
Result of invoke: 7
Calling no-arg void-return method
myNoargMethod ()V
throwingMethod
Invoke got expected exception:
java.lang.reflect.InvocationTargetException
java.lang.NullPointerException: gratuitous throw!

Field name is string1
 Declaring class is Target
 Field type is java.lang.String
 Access flags are 0x1
  string1 value is 'hey'
  ::: hey:yo:there
  string1 value is now 'a new string'
  ::: a new string:yo:there
  got expected illegal obj store exc
  got the other expected access exc
  got expected arg exc
pubLong initial value is 1122334455667788
pubLong new value is 9988776655443322
Field name is superInt
 Declaring class is SuperTarget
 Field type is int
 Access flags are 0x1
  superInt value is 1010101
  superInt boxed is 1010101
  superInt value is now 20202
  superInt value (from short) is now 30303
  superInt value is now 40404
  got expected long->int failure
  got expected long->int failure
  got expected string->int failure
  got expected int->short failure
Field name is superClassInt
 Declaring class is SuperTarget
 Field type is int
 Access flags are 0x9
  superClassInt value is 1010102
Field name is staticDouble
 Declaring class is Target
 Field type is double
 Access flags are 0x9
  staticDoubleVal value is 3.3
  got expected double->long failure
as expected: aPrivateInt not found
Field name is constantString
 Declaring class is Target
 Field type is java.lang.String
 Access flags are 0x19
  Constant test value is a constant string
Field name is cantTouchThis
 Declaring class is Target
 Field type is int
 Access flags are 0x11
  cantTouchThis is 77
  as expected: set-final throws exception
  cantTouchThis is still 77
  public final int Target.cantTouchThis accessible=false
  public final int Target.cantTouchThis accessible=true
  cantTouchThis is now 87
  cantTouchThis is now 88
cons modifiers=1
SuperTarget constructor ()V
Target constructor (IF)V : ii=7 ff=3.3333
myMethod (I)I
 arg=17 anInt=7
got expected exception for Class.newInstance
got expected exception for Constructor.newInstance
ReflectTest done!
public method
static java.lang.Object java.util.Collections.checkType(java.lang.Object,java.lang.Class) accessible=false
static java.lang.Object java.util.Collections.checkType(java.lang.Object,java.lang.Class) accessible=true
checkType invoking null
checkType got expected exception
calling const-class FieldNoisyInitUser.class
called const-class FieldNoisyInitUser.class
got fields
got field
FieldNoisyInitUser is initializing
read field value
FieldNoisyInit is initializing

calling const-class MethodNoisyInitUser.class
called const-class MethodNoisyInitUser.class
got methods
got method
MethodNoisyInitUser is initializing
invoked method
MethodNoisyInit is initializing

generic field: java.util.List<java.lang.String>
generic method fancyMethod params='[1] java.util.ArrayList<java.lang.String>' ret='java.util.Map<java.lang.Integer, java.lang.String>'
generic ctor Main params='[1] java.util.ArrayList<java.lang.Integer>'
fields are unique
fields are .equals
methods are unique
methods are .equals
type1 is a ParameterizedType
type2 is a ParameterizedType
type3 is a ParameterizedType
type1(java.util.Set<java.lang.String>) equals type2(java.util.Set<java.lang.String>)
type1(java.util.Set<java.lang.String>) equals type3(java.util.Set<java.lang.String>)
type1(java.util.Set<java.lang.String>) hashCode equals type2(java.util.Set<java.lang.String>) hashCode
type1(java.util.Set<java.lang.String>) hashCode equals type3(java.util.Set<java.lang.String>) hashCode
type1 is a GenericArrayType
type2 is a GenericArrayType
type3 is a GenericArrayType
type1(T[]) equals type2(T[])
type1(T[]) equals type3(T[])
type1(T[]) hashCode equals type2(T[]) hashCode
type1(T[]) hashCode equals type3(T[]) hashCode
