protected XPathResultType GetXPathType(object value) {
if (value is XPathNodeIterator) return XPathResultType.NodeSet;
if (value is string ) return XPathResultType.String;
if (value is double ) return XPathResultType.Number;
if (value is bool ) return XPathResultType.Boolean;
Debug.Assert(value is XPathNavigator, "Unknown value type");
return XPathResultType_Navigator;
}