// This aspect just overrides the main method and generates // a class graph of the running program. Good way of reverse // engineering the program. The output is a class dictionary. import edu.neu.ccs.demeter.dj.*; aspect CreateClassGraph { pointcut mainpc(String [] args) : call( * main(..) ) && args(args); void around(String [] args) : mainpc(args){ ClassGraph cg = new ClassGraph(true, false); ClassGraphListener newCgListener = ClassGraphListenerFactory.getNew(); newCgListener.ClassGraphEvent(args, cg); } }