Seems like a pretty complicated data structure... What problem are you facing? Maybe it's possible to simplify data structure?
Also,
Method class is a part of java core classes, so it's a bad practice to define your own class with same name.
Anyway, here's a brief sketch of how might you do what you want to, with breadth first search.
1. Initialize data structures where you want to store yielded information (for example, the counter data of each level of the tree may be grouped into list)
2. Define a method that would accept a collection of events as an argument. Inside the method:
2.1. Count all the events
2.2. Count all the methods of the events
2.3. Store the data at (1) data structure
2.4. Create and fill the collection of events of lower level (from the collection of events passed to this method as an argument)
2.5. Call this method on the (2.4.) collection recursively
3. Don't forget to specify termination condition!