if( TreeInfo.isEmptySequence( top ) ) { syntaxError( top.pos, "empty sequence not allowed here", false); }
    Tree treePattern() {        int base = sp;	Tree top = simplePattern();	if (s.token == COLON) {	    if (TreeInfo.isVarPattern(top))		return make.Typed(s.skipToken(), top, type1());	}	if (s.token == IDENTIFIER) {            if (s.name == STAR) {    /*         p*  becomes  z@( |(p,z))       */                s.nextToken();                Name zname = fresh();                Tree zvar = make.Ident(s.pos, zname);                return make.Bind(s.pos, zname,                     pN.flattenAlternative(                        make.Alternative(s.pos, new Tree[] {                            make.Sequence(s.pos, Tree.EMPTY_ARRAY),                            pN.flattenSequence(make.Sequence(s.pos, new Tree[] {                                top,                                 zvar                            }))                        })));             }             else if (s.name == PLUS) {    /*    p+   becomes   z@(p,(z| ))    */                s.nextToken();                Name zname = fresh();                Tree zvar = make.Ident(s.pos, zname);                return make.Bind(s.pos, zname,                     pN.flattenSequence(make.Sequence(s.pos, new Tree[] {                        top,                        pN.flattenAlternative(make.Alternative(s.pos, new Tree[] {                            zvar,                            make.Sequence(s.pos, Tree.EMPTY_ARRAY)                        }))                     })));            }            else if (s.name == OPT) { /*    p?   becomes   (p| )            */                s.nextToken();                return pN.flattenAlternative(make.Alternative(s.pos, new Tree[] {                    top,                    make.Sequence(s.pos, Tree.EMPTY_ARRAY)}));            }        }        while ((s.token == IDENTIFIER) && (s.name != BAR)) {            top = reduceStack(                false, base, top, s.name.precedence(), s.name.isLeftAssoc());            push(top, s.pos, s.name);            ident();            top = simplePattern();        }        return reduceStack(false, base, top, 0, true);    }