filterMethods.addBeforeMethod(annotation.value(), method);
filterMethods.addBeforeMethod(annotation.stages(), method);
	protected FilterMethods getFilterMethods(Class<? extends ActionBean> beanClass) {		FilterMethods filterMethods = filterMethodsCache.get(beanClass);		if (filterMethods == null) {			filterMethods = new FilterMethods();			filterMethodsCache.put(beanClass, filterMethods);					// Look for @Before and @After annotations on the methods in the ActionBean class			Collection<Method> methods = ReflectUtil.getMethods(beanClass);            for (Method method : methods) {                if (method.isAnnotationPresent(Before.class) || method.isAnnotationPresent(After.class)) {                    // Check to ensure that the method has an appropriate signature                    int mods = method.getModifiers();                    if (method.getParameterTypes().length != 0 || Modifier.isAbstract(mods)) {                        log.warn("Method '", beanClass.getName(), ".", method.getName(), "' is ",                                 "annotated with @Before or @After but has an incompatible ",                                 "signature. @Before/@After methods must be non-abstract ",                                 "zero-argument methods.");                        continue;                    }                    // Now try and make private/protected/package methods callable                    if (!method.isAccessible()) {                        try {                            method.setAccessible(true);                        }                        catch (SecurityException se) {                            log.warn("Method '", beanClass.getName(), ".", method.getName(), "' is ",                                     "annotated with @Before or @After but is not public and  ",                                     "calling setAccessible(true) on it threw a SecurityException. ",                                     "Please either declare the method as public, or change your ",                                     "JVM security policy to allow Stripes code to call ",                                     "Method.setAccessible() on your code base.");                            continue;                        }                    }                    if (method.isAnnotationPresent(Before.class)) {                            Before annotation = method.getAnnotation(Before.class);                            filterMethods.addBeforeMethod(annotation.value(), method);                    }                    if (method.isAnnotationPresent(After.class)) {                        After annotation = method.getAnnotation(After.class);                        filterMethods.addAfterMethod(annotation.value(), method);                    }                }            }		}        return filterMethods;	}