OutlineImpl implements Outline<T> { @Override public Collection<foundation.stack.datamill.reflection.Method> methods() { return getMethods(); } OutlineImpl(T members, boolean camelCased); @Override String camelCasedName(); @Override String camelCasedPluralName(); @Override A getAnnotation(Class<A> annotationClass); @Override boolean hasAnnotation(Class<? extends Annotation> annotationClass); @Override Collection<foundation.stack.datamill.reflection.Method> methods(); @Override Member member(Consumer<T> memberInvoker); @Override String name(); @Override String pluralName(); @Override Property property(Consumer<T> memberInvoker); @Override Collection<String> propertyNames(); @Override Collection<Property> properties(); @Override String snakeCasedName(); @Override String snakeCasedPluralName(); @Override Bean<T> wrap(T instance); @Override Outline<T> withPluralName(String pluralName);  }
@Test public void methods() { Outline<TestBeanClass> outline = OutlineBuilder.DEFAULT.defaultSnakeCased().build(TestBeanClass.class); assertEquals(5, outline.methods().stream().mapToInt(m -> { switch (m.getName()) { case "getReadOnlyProperty": return 1; case "isBooleanProperty": return 1; case "getReadWriteProperty": return 1; case "setReadWriteProperty": return 1; case "nonPropertyMethod": return 1; default: return 0; } }).sum()); }