@Test
  public void testTypeTag2() throws Exception {
    TypeTags.TypeTag<List> tt1 = typeTag(List.class, String.class);
    assertThat(
        tt1.tpe().toString(),
        is(String.format("%s[%s]", List.class.getName(), String.class.getName())));

    TypeTags.TypeTag<Map> tt2 = typeTag(Map.class, String.class, Integer.class);
    assertThat(
        tt2.tpe().toString(),
        is(
            String.format(
                "%s[%s,%s]",
                Map.class.getName(), String.class.getName(), Integer.class.getName())));
  }
 @Test
 public void testTypeTag3() throws Exception {
   TypeTags.TypeTag<List> tt =
       typeTag(
           List.class,
           typeTag(Set.class, typeTag(Map.class, typeTag(String.class), typeTag(Integer.class))));
   assertThat(
       tt.tpe().toString(),
       is(
           String.format(
               "%s[%s[%s[%s,%s]]]",
               List.class.getName(),
               Set.class.getName(),
               Map.class.getName(),
               String.class.getName(),
               Integer.class.getName())));
 }
 @Test
 public void testTypeTag1() throws Exception {
   TypeTags.TypeTag<String> tt = typeTag(String.class);
   assertThat(tt.tpe().toString(), is(String.class.getName()));
 }