result = true;
    public void traverse(Tree tree) {    	if (!result)	    switch (tree) {	    case Alternative(_):		result = true;		break;	    case Bind(_, Tree pat):		if( TreeInfo.isEmptySequence( pat ) ) {		    // annoying special case: b@() [or b@(()|()) after normalization]		    //System.err.println("bindin empty "+tree.symbol());		    nilVariables.add(tree.symbol());		} else {		    variables.add(tree.symbol());		}		traverse(pat);		break;	    case Ident(_):		Symbol symbol = tree.symbol();		if ((symbol != Global.instance.definitions.PATTERN_WILDCARD) &&		    variables.contains(symbol))		    result = true;		break;	    case CaseDef(Tree pat, _, _):		traverse(pat);		break;			    case Sequence( Tree[] trees):		//result = true;		traverse( trees );		result = true;		break;			    default:		super.traverse( tree );	    }    }