### Question:
Collector implements
        Internal<Collector<T>, List<T>>,
        And<T>,
        Monad<List<T>>,
        Functor<T> { @Override public Collector<T> and(T item) { if (item != null) { items.add(item); } return copy(); } Collector(InternalConfiguration configuration); @Override Collector<T> and(T item); Chain<List<T>> toList(); @Override R flatMap(@NonNull Function<List<T>, R> flatMapper); Collector<T> forEach(@NonNull Consumer<T> action); Collector<R> map(Function<T, R> mapper); Chain<T> reduce(BiFunction<T, T, T> reducer); Logger<Collector<T>, List<T>> log(Object tag); @Override Proxy<Collector<T>, List<T>> access();  }### Answer:
@Test public void andWithMultipleItemsThenAppendAllToTheList() { Collector<Boolean> result = new Collector<Boolean>(configuration) .and(true) .and(false) .and(true); assertTrue(result.items.get(0) && !result.items.get(1) && result.items.get(2)); }
@Test public void runCollectorProxyTester() { Collector<Integer> collector = new Collector<>(InternalConfiguration.getInstance("runCollectorProxyTester")); collector.and(1).and(2).and(3); new ProxyTester<>(collector, Arrays.asList(4, 5, 6)).run(); }