### Question:
TypeKey { public final Class<T> getTreeType() { return treeType; } @SuppressWarnings("unchecked")  TypeKey(); final Class<T> getTreeType(); @Override final boolean equals(Object o); @Override final int hashCode(); @Override final String toString();  }### Answer:
@Test public void type0() { final TypeKey<Tree<String, Node<String>>> key0 = new TypeKey<Tree<String, Node<String>>>() { }; assertEquals(Tree.class, key0.getTreeType()); }
@Test public void type1() { final TypeKey<TestTree> key0 = new TypeKey<TestTree>() { }; assertEquals(TestTree.class, key0.getTreeType()); }
@Test public void type2() { final TypeKey<TestTree> key0 = new TestTreeTypeKey(); assertEquals(TestTree.class, key0.getTreeType()); }