### Question:
ControllerBase implements Controller,
		JacksonJsonView, HTMLFilterProvider, JSONErrorPageRenderer,
		ValidatorProvider, TextRendererProvider, JacksonJsonParamReader { Filters getFilters() { return this.filters .computeIfAbsent( this.getClass(), (klass) -> { final FilterScanner scanner = new FilterScanner(); scanner.scan(klass); return scanner.build(); }); }  @Override void init(final HttpServletRequest servletRequest,
			final HttpServletResponse servletResponse,
			final Map<String, String> captured); @Override HttpServletRequest getServletRequest(); RedirectResponse redirect(@NonNull final String location); RedirectResponse redirect(@NonNull final String location, @NonNull Map<String, String> parameters); WebResponse errorMethodNotAllowed(); WebResponse errorForbidden(); WebResponse errorForbidden(final String message); WebResponse errorNotFound(); @Override WebResponse renderText(final String text); @Override String filterHTML(final String html); @Override void invoke(final Method method,
			final HttpServletRequest servletRequest,
			final HttpServletResponse servletResponse,
			final Map<String, String> captured); WebResponse handleException(Throwable e); @Override void close(); @Override Optional<Object> getPluginStashValue(Class<?> pluginClass, String key); @Override void setPluginStashValue(Class<?> pluginClass, String key,
			Object value); @Override Object computePluginStashValueIfAbsent(Class<?> pluginClass,
			String key,
			Supplier<?> supplier); @Override Map<String, String> getPathParams(); URL getCurrentURL(); URI uriFor(String path, Map<String, String> parameters); URI uriFor(final String path); URI uriWith(final Map<String, String> parameters);  }### Answer:
@Test public void test2() { try (final Controller2 controller = new Controller2()) { final Filters filters = controller.getFilters(); filters.getResponseFilters().forEach(System.out::println); assertThat(filters.getResponseFilters().size(), is(1)); } }
@Test public void test3() throws Exception { try (final ControllerY controller = new ControllerY()) { final Filters filters = controller.getFilters(); filters.getResponseFilters().forEach(System.out::println); final String methods = filters.getResponseFilters() .stream() .map(Method::getName) .collect(Collectors.joining(",")); System.out.println(methods); assertThat(filters.getResponseFilters(), is(Arrays.asList( this.method(MixinA.class, "filterA"), this.method(MixinA.class, "filterA2"), this.method(ControllerX.class, "filterA2"), this.method(MixinB.class, "filterB"), this.method(ControllerY.class, "filterA") ))); } }
@Test public void test() { try (final MyController controller = new MyController()) { final Filters filters = controller.getFilters(); assertThat(filters.getResponseFilters().size(), is(1)); } }