private String creator(Type.Reference reference) {
      if (isMatcher(reference)) {
        String name = reference.name;
        if (name.endsWith(".Template")) {
          name = name.substring(0, name.lastIndexOf(".Template"));
        }

        if (attribute.hasCriteria() && name.endsWith("Template")) {
          name = name.substring(0, name.lastIndexOf("Template"));
        }

        return name + ".creator()";
      }

      // default (and generic) object matcher
      return "org.immutables.criteria.matcher.ObjectMatcher.creator()";
    }
Criteria templates are always generated as top-level class (separate file).
Construct criteria name from {@linkplain TypeMirror}

@return fully qualified criteria (template) class name
value-processor/src/org/immutables/value/processor/meta/CriteriaModel.java