@Test
public void testAspects() throws Exception {

	Foo foo = new Foo();
	TestAspect aspect = new TestAspect(foo);
	aspect.reset();
	foo.bar.setInternal("BAR");
	assertFalse(aspect.setCalled);
	foo.bar.getInternal();
	assertFalse(aspect.getCalled);
	aspect.reset();
	foo.bar.set("BAR");
	assertTrue(aspect.setCalled);
	foo.bar.get();
	assertTrue(aspect.getCalled);
	Iterator<Aspect> aspects = foo.aspects().iterator();
	assertTrue(aspects.hasNext());
	assertEquals(aspect, aspects.next());
	aspects.remove();
	assertTrue(aspects.hasNext());
	aspects.next();
	assertFalse(aspects.hasNext());
	aspect.reset();
	foo.bar.set("BAR");
	assertFalse(aspect.setCalled);
	foo.bar.get();
	assertFalse(aspect.getCalled);
}