MethodHierarchyReader { public Iterable<List<EndpointMethod>> getEndpointOverrides() { readMethodHierarchyIfNecessary(); return asMap(endpointMethods).values(); } MethodHierarchyReader(Class<?> endpointClass); Iterable<Method> getLeafMethods(); Iterable<EndpointMethod> getLeafEndpointMethods(); Iterable<List<Method>> getMethodOverrides(); Iterable<List<EndpointMethod>> getEndpointOverrides(); Map<String, Method> getNameToLeafMethodMap(); ListMultimap<String, EndpointMethod> getNameToEndpointOverridesMap();  }
@Test public void testGetEndpointOverrides() { Iterable<List<EndpointMethod>> methods = methodReader.getEndpointOverrides(); TestHelper helper = new TestHelper(Iterables.size(methods)); for (List<EndpointMethod> overrides : methods) { Method method = overrides.get(0).getMethod(); helper.verifySingleMethod(method); verifyOverrides(method, overrides); } helper.verifyAllMethodsSeen(); }