resolution = invoke(bean, method, stage, Before.class); if (resolution != null) { return resolution;
String[] on = method.getAnnotation(Before.class).on(); if (event == null || CollectionUtil.applies(on, event)) { resolution = invoke(bean, method, stage, Before.class); if (resolution != null) { return resolution; }
	public Resolution intercept(ExecutionContext context) throws Exception {		LifecycleStage stage = context.getLifecycleStage();        Resolution resolution = null;		// Run @Before methods, as long as there's a bean to run them on		if (context.getActionBean() != null) {            ActionBean bean = context.getActionBean();            FilterMethods filterMethods = getFilterMethods(bean.getClass());			List<Method> beforeMethods = filterMethods.getBeforeMethods(stage);            for (Method method : beforeMethods) {                resolution = invoke(bean, method, stage, Before.class);                if (resolution != null) {                    return resolution;                }            }        }        // Continue on and execute other filters and the lifecycle code        resolution = context.proceed();        // Run After filter methods (if any)        ActionBean bean = context.getActionBean();		FilterMethods filterMethods = getFilterMethods(bean.getClass());		List<Method> afterMethods = filterMethods.getAfterMethods(stage);        Resolution overrideResolution = null;        for (Method method : afterMethods) {            overrideResolution = invoke(bean, method, stage, After.class);            if (overrideResolution != null) {                return overrideResolution;            }        }		return resolution;	}