private object ExtractLiteralValue(QilNode nd) {
if (nd.NodeType == QilNodeType.True)
return true;
else if (nd.NodeType == QilNodeType.False)
return false;
else if (nd.NodeType == QilNodeType.LiteralQName)
return nd;
Debug.Assert(nd is QilLiteral, "All literals except True, False, and QName must use QilLiteral");
return ((QilLiteral) nd).Value;
}