@Override
    public Parameterized parameterized(Reference raw, Iterable<? extends Nonprimitive> arguments) {
      return new Parameterized(raw, ImmutableList.copyOf(arguments));
    }
I've created this type model as an experiment which I want to bring forward and evolve
into something more general purpose, probably, an utility library some day.
The idea here is to give practical, yet accurate depiction of the type system in java using
immutable types, being lightweight, efficient and easy to analyse and transform. Apparently,
neither {@code java.lang.reflect} nor {@code javax.lang.model} (nor any 3rd party lib I've seen)
are not suitable for anything I want to do.
<p>
What we tried to avoid:
<ul>
<li>Compicated reverse references and mutability</li>
<li>Idealism and unrealistic overgeneralization ({@link java.lang.reflect.WildcardType}
anyone?)</li>
<li>Complicated types like intersection or unions where we get without them</li>
</ul>
Moreover we are only concerned with the types in signatures, not a whole spectre of types which
might occur in java code.
value-processor/src/org/immutables/value/processor/encode/Type.java