aspect Trace {
	public static boolean expectNoSuchMethodError = false;
	
	before(): execution(void doit(..)) {
		System.out.println("entering");
		
	}

	public void method() {
		// Extra method to do nothing but test if the numbering still behaves	
	}

	static aspect InnerTrace {
		before(): execution(void doit(..)) {
			System.out.println("Inner entering");
		}
		
		after() returning: execution(void doit(..)) {
			System.out.println("Inner exiting");
		}
		
		after() throwing: execution(void doit(..)) {
			System.out.println("Inner chucking");
		}
		
		before(): execution(* noMatch(..)) {
			System.out.println("This doesn't match anything, but checks the sequence number for the next bit of advice is OK");
		}
	}
	
	after() returning: execution(void doit(..)) {
		System.out.println("exiting");
	}
}