### Question:
TreesImpl implements Trees { @Override public SimpleCollection<Class<?>> availableTreeImplementations() { final ServiceLoader<TreeImplementation> loader = ServiceLoader.load(TreeImplementation.class); final ArrayListSimpleCollection<Class<?>> classes = new ArrayListSimpleCollection<>(); loader.forEach(i -> classes.add(i.forClass())); return classes; } TreesImpl(); @Override TreeSelectorFactory treeSelectors(); @Override NodeSelectorFactory nodeSelectors(); @Override TreeWalkerFactory treeWalkers(); @Override TreeIteratorFactory treeIterators(); @Override NodeStreamFactory nodeStreams(); @Override TreeBuilderFactory treeBuilders(); @Override TreeTransformer transformations(); @Override Querier querier(); @Override SimpleCollection<Class<?>> availableTreeImplementations();  }### Answer:
@Test public void availableTreeImplementations() { final Trees trees = Trees.get(); final SimpleCollection<Class<?>> implementations = trees.availableTreeImplementations(); assertEquals(2, implementations.size()); final List<Class<?>> classes = new ArrayList<>(); implementations.forEach(classes::add); assertTrue(classes.contains(LinkedTree.class)); assertTrue(classes.contains(MutableBinaryTreeImpl.class)); }