public XmlQueryType FilterOf(XmlQueryType source, XmlQueryType filter) {
Debug.Assert(filter.IsNode && filter.Count == 1 && filter.IsSingleton);
List<XmlQueryType> list = new List<XmlQueryType>();
XmlQueryCardinality card = XmlQueryCardinality.None;
foreach (XmlQueryType sourceItem in source) {
card |= AddFilteredPrime(list, sourceItem, filter, true);
}
// Make sure that cardinality is at least Zero
return PrimeProduct(ChoiceType.Create(list), source.Cardinality * card);
}