@Override
    public TypeMirror visitTypeVariable(TypeVariable t, Void p) {
      TypeMirror substituted = substitute.apply(t);
      return (substituted == null) ? t : substituted;
    }
Rewrites types such that references to type variables in the given map are replaced by the
values of those variables.
value/src/main/java/com/google/auto/value/processor/TypeVariables.java