public static XmlQueryType Create(XmlQueryType prime, XmlQueryCardinality card) {
Debug.Assert(prime != null, "SequenceType can only modify the cardinality of a non-null XmlQueryType.");
Debug.Assert(prime.IsSingleton, "Prime type must have cardinality one.");
if (prime.TypeCode == XmlTypeCode.None) {
// If cardinality includes zero, then return (None, Zero), else return (None, None).
return XmlQueryCardinality.Zero <= card ? Zero : None;
}
// Normalize sequences with these cardinalities: None, Zero, One
if (card == XmlQueryCardinality.None) {
return None;
}
else if (card == XmlQueryCardinality.Zero) {
return Zero;
}
else if (card == XmlQueryCardinality.One) {
return prime;
}
return new SequenceType(prime, card);
}