* that defers its behavior to the lazily invoked invocation.
*/
@Override
public void advise(final MethodInvocation invocation)
{
ObjectCreator deferred = new ObjectCreator()
{
@Override
public Object createObject()
{
invocation.proceed();
return invocation.getReturnValue();
}
};
ObjectCreator cachingObjectCreator = new CachingObjectCreator(deferred);
Object thunk = thunkCreator.createThunk(thunkType, cachingObjectCreator, description);
invocation.setReturnValue(thunk);
}