private SyntaxTreeNode parseTopLevel(SyntaxTreeNode parent, String text, int line,
private SyntaxTreeNode parseTopLevel(SyntaxTreeNode parent, String text,
    private SyntaxTreeNode parseTopLevel(SyntaxTreeNode parent,					 String text, int line,					 String expression) {	try {	    _xpathParser.setScanner(new XPathLexer(new StringReader(text)));	    Symbol result = _xpathParser.parse(line);	    if (result != null) {		final SyntaxTreeNode node = (SyntaxTreeNode)result.value;		if (node != null) {		    node.setParser(this);		    node.setParent(parent);		    return node;		}	    } 	    reportError(Constants.ERROR,		new ErrorMsg(ErrorMsg.XPATHPAR_ERR, line, expression));	}	catch (ClassCastException e) {	    reportError(Constants.ERROR,			new ErrorMsg(ErrorMsg.XPATHPAR_ERR, line, expression));	}	catch (Exception e) {	    if (_xsltc.debug()) {		e.printStackTrace();	    }	    // Intentional fall through	}	// Return a dummy pattern (which is an expression)	SyntaxTreeNode.Dummy.setParser(this);        return SyntaxTreeNode.Dummy;     }