private XmlNode GetMatchingNode( XmlNode n, bool bNext ) {
Debug.Assert( n!= null );
XmlNode node = n;
do {
if ( bNext )
node = NextElemInPreOrder( node );
else
node = PrevElemInPreOrder( node );
} while ( node != null && !IsMatch( node ) );
return node;
}