a tool to investigate a class at run-time. given a class, can tell and return:
- how many methods are there in the class.
- how many c'tors does the class have.
- how many vars (fields) are there in the class definition
- all the interfaces the class contains
- how many final fields the class have
- number of static methods
- if the class is extending a super class
- the parent class
- names of all fields including all the inheritance chain
- invoke a method that returns int
- create new instance, with any kind of c'tor
- invoke any method
- get all the inherintance chain (except Object)