@Override
    public MatcherDef parameterized(Type.Parameterized parameterized) {
      for (Type.Nonprimitive arg: parameterized.arguments) {
        if (arg instanceof Type.Parameterized) {
          Type.Parameterized param = (Type.Parameterized) arg;
          if (isMatcher(param.reference)) {
            // single match expected for now
            return new ContainerDef(parameterized.reference, param.accept(this), creator(parameterized.reference));
          }
        }
      }

      return reference(parameterized.reference);
    }
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