public Type getType() {
    return token.getType();
  }
@Test
  public void testEnclosing2() throws Exception {
    // If we don't override, the best we can get is List<Set<T>>
    // TypeRememberer<List<Set<String>>> rememberer =
    //    new GenericMaker2<String>(){}.getGenericMaker().getRememberer();
    // assertNotEquals(
    //    new TypeToken<List<Set<String>>>() {}.getType(),
    //    rememberer.descriptorByInstance.getType());

    // If we've overridden the getGenericMaker we can determine the types.
    TypeRememberer<List<Set<String>>> rememberer =
        new GenericMaker2<String>() {
          @Override
          public GenericMaker<Set<String>> getGenericMaker() {
            return new GenericMaker<Set<String>>() {};
          }
        }.getGenericMaker().getRememberer();
    assertEquals(
        new TypeToken<List<Set<String>>>() {}.getType(), rememberer.descriptorByInstance.getType());
  }