	@Test
	public void testSubtrees() {

		// Test if subtrees are correctly determined
		String message = "Subtrees collection was incorrectly determined";

		Collection<TreeNode<String>> mSubtreesLevel1 = new HashSet<>(3);
		mSubtreesLevel1.add(node1);
		mSubtreesLevel1.add(node2);
		mSubtreesLevel1.add(node9);
		assertEquals(message, mSubtreesLevel1, root.subtrees());

		Collection<TreeNode<String>> mSubtreesLevel2 = new HashSet<>(3);
		mSubtreesLevel2.add(node3);
		mSubtreesLevel2.add(node7);
		mSubtreesLevel2.add(node8);
		assertEquals(message, mSubtreesLevel2, node2.subtrees());

		Collection<TreeNode<String>> mSubtreesLevel3 = Collections.singleton(node6);
		assertEquals(message, mSubtreesLevel3, node5.subtrees());

		assertEquals(message, Collections.emptySet(), node6.subtrees());
	}