public static XmlQueryType Create(XmlNodeKindFlags nodeKinds) {
List<XmlQueryType> members;
// If exactly one kind is set, then create singleton ItemType
if (Bits.ExactlyOne((uint) nodeKinds))
return ItemType.Create(NodeKindToTypeCode[Bits.LeastPosition((uint) nodeKinds)], false);
members = new List<XmlQueryType>();
while (nodeKinds != XmlNodeKindFlags.None) {
members.Add(ItemType.Create(NodeKindToTypeCode[Bits.LeastPosition((uint) nodeKinds)], false));
nodeKinds = (XmlNodeKindFlags) Bits.ClearLeast((uint) nodeKinds);
}
return Create(members);
}