switch (fn.type()) {
Type fnType = fn.type(); switch (fnType) {
    public Apply Apply(int pos, Tree fn, Tree[] vargs) {        switch (fn.type()) {        case Type.OverloadedType(_, _):            // TreeGen only builds trees, names must already be resolved            throw Debug.abort("unresolved name", fn + " - " + fn.type());        case Type.MethodType(Symbol[] vparams, Type restpe):            return (Apply)make.Apply(pos, fn, vargs).setType(restpe);        default:            throw Debug.abort("illegal case", fn + " - " + fn.type());        }    }