string [] GetDerived(string target) { XmlSchemaDatatype strType = GetDatatype(target); List <string> results = new List <string> (); foreach (string name in allTypes) { if (name == target) { continue; } XmlSchemaDatatype deriv = GetDatatype(name); if (deriv.IsDerivedFrom(strType)) { results.Add(name); } else { Console.Error.WriteLine(deriv.GetType() + " is not derived from " + strType.GetType()); } } return(results.ToArray()); }