@Test
  public void timeZone() {

    assertAttribute("timeZone",
            "org.immutables.criteria.matcher.ObjectMatcher.Template<R,java.util.TimeZone>");
    assertAttribute("optionalTimeZone",
            "org.immutables.criteria.matcher.OptionalObjectMatcher.Template<R,org.immutables.criteria.matcher.ObjectMatcher.Template<R,java.util.TimeZone>,java.util.Optional<java.util.TimeZone>>");
    checkCreator("optionalTimeZone").contains("ObjectMatcher.creator()");
    assertAttribute("nullableTimeZone",
            "org.immutables.criteria.matcher.OptionalObjectMatcher.Template<R,org.immutables.criteria.matcher.ObjectMatcher.Template<R,java.util.TimeZone>,java.util.TimeZone>");
    checkCreator("nullableTimeZone").contains("ObjectMatcher.creator()");
    checkCreator("listTimeZone").contains("ObjectMatcher.creator()");
    checkCreator("arrayTimeZone").contains("ObjectMatcher.creator()");
  }
Scans all attributes using reflection and generates a matcher
criteria/common/test/org/immutables/criteria/processor/CriteriaModelProcessorTest.java