public QilNode Predicate(QilNode node, QilNode condition, bool isReverseStep) {
Debug.Assert(isReverseStep == false, "patterns can't have reverse axe");
QilLoop nodeFilter = (QilLoop) node;
if (condition.XmlType.TypeCode == XmlTypeCode.Double) {
predicateEnvironment.SetContext(nodeFilter);
condition = f.Eq(condition, predicateEnvironment.GetPosition());
} else {
condition = f.ConvertToBoolean(condition);
}
nodeFilter.Body = f.And(nodeFilter.Body, condition);
SetPriority(node, 0.5);
return node;
}