public static bool IsSubset(NamespaceList sub, NamespaceList super) {
if (super.type == ListType.Any) {
return true;
}
else if (sub.type == ListType.Other && super.type == ListType.Other) {
return super.targetNamespace == sub.targetNamespace;
}
else if (sub.type == ListType.Set) {
if (super.type == ListType.Other) {
return !sub.set.Contains(super.targetNamespace);
}
else {
Debug.Assert(super.type == ListType.Set);
foreach (string ns in sub.set.Keys) {
if (!super.set.Contains(ns)) {
return false;
}
}
return true;
}
}
return false;
}