@Test
  public void string() {
    assertAttribute("string", "org.immutables.criteria.matcher.StringMatcher.Template<R>");
    checkCreator("string").not().contains("ModelCriteria.creator()");
    assertAttribute("nullableString", "org.immutables.criteria.matcher.OptionalStringMatcher.Template<R, java.lang.String>");
    assertAttribute("optionalString", "org.immutables.criteria.matcher.OptionalStringMatcher.Template<R,java.util.Optional<java.lang.String>>");
    assertAttribute("guavaOptionalString", "org.immutables.criteria.matcher.OptionalStringMatcher.Template<R,com.google.common.base.Optional<java.lang.String>>");
    assertAttribute("fugue3OptionalString", "org.immutables.criteria.matcher.OptionalStringMatcher.Template<R,io.atlassian.fugue.Option<java.lang.String>>");
    assertAttribute("stringList", "org.immutables.criteria.matcher.IterableMatcher.Template<R,org.immutables.criteria.matcher.StringMatcher.Template<R>,java.lang.String,java.util.List<java.lang.String>>");
    checkCreator("stringList").contains("IterableMatcher.creator()");
    checkCreator("arrayList").contains("IterableMatcher.creator()");

  }
Scans all attributes using reflection and generates a matcher
criteria/common/test/org/immutables/criteria/processor/CriteriaModelProcessorTest.java