case Sequence( Tree[] trees ): return check1( trees, inAlt );
case Sequence( Tree[] trees ): seqDepth++; boolean res = check1( trees, inAlt ); seqDepth--; return res;
    protected boolean check1( Tree t, boolean inAlt ) {	switch( t ) {	case Literal( _ ):	    return true;	case Apply( _, Tree[] args ): 	    return check1( args, inAlt );	    	case Sequence( Tree[] trees ):	    return check1( trees, inAlt );	    	case Alternative( Tree[] trees ):	    return check1( trees, true );	case Bind( Name var, Tree tree ):	    if(( inAlt )	       &&( var.toString().lastIndexOf("$") == -1)) {		unit.error( t.pos, 			      "variable binding not allowed under alternative");		return false;	    }	    this.boundVars.put( var /*t.symbol()*/, Boolean.FALSE );	    /*              boolean result = check( tree, inSeq );              if(((Boolean) this.boundVars.get( t.symbol() ))	      .booleanValue()) { // occurs recursively	      // do something to RESTRICT recursion              }	    */	    return check1( tree, inAlt );	    	case Typed( _, _):	    return true;	case Ident( Name var ):	    if (inAlt && var.isVariable() && var != Names.PATTERN_WILDCARD &&		var.lastPos((byte)'$') == -1) {		unit.error( t.pos, 			    "variable not allowed under alternative");		return false;	    }              /*              System.out.println( t.symbol().toString() );              */	    if(( this.boundVars.containsKey( var /*t.symbol()*/ ))	       &&( var.toString().lastIndexOf("$") == -1)) {		  unit.error( t.pos, 			      "recursive patterns not allowed");		  		  //this.boundVars.put( t.symbol(), Boolean.TRUE ); //mark recursive                    //System.out.println( t.symbol() + "occurs recursively");              }              	    return true;	    	case Select( _, _ ):	    return true;                /*	case Empty: // may appear just as Sequence Sequence	    if ( !inSeq ) 		unit.error( t.pos,			    "empty subsequence without surrounding '['']'");	    return inSeq;	    */	default:	    unit.error( t.pos, "whut'z dis ?"+t.toString()); // never happens	}	return false;    }