public Tree TypeApply(Tree fn, Tree[] args) { return TypeApply(fn.pos, fn, args);
public Tree TypeApply(int pos, Tree fn, Tree[] args) { switch (fn.type) { case Type.PolyType(Symbol[] tparams, Type restpe): return make.TypeApply(pos, fn, args) .setType(restpe.subst(tparams, Tree.typeOf(args))); default: throw new ApplicationError("poly type required", fn.type); }
    public Tree TypeApply(Tree fn, Tree[] args) {      return TypeApply(fn.pos, fn, args);    }