private void CheckAttributeSets_RecurceInList(Hashtable markTable, ICollection setQNames) {
const string PROCESSING = "P";
const string DONE = "D";
foreach (XmlQualifiedName qname in setQNames) {
object mark = markTable[qname];
if (mark == (object) PROCESSING) {
throw XsltException.Create(Res.Xslt_CircularAttributeSet, qname.ToString());
} else if (mark == (object) DONE) {
continue; // optimization: we already investigated this attribute-set.
} else {
Debug.Assert(mark == null);
markTable[qname] = (object) PROCESSING;
CheckAttributeSets_RecurceInContainer(markTable, GetAttributeSet(qname));
markTable[qname] = (object) DONE;
}
}
}