public virtual Type[] ExtractAncestors(Type[] parents)
{
ArrayList ancestors = new ArrayList();
foreach (Type parent in parents) {
foreach (Type anc in GetAncestors(parent)) {
if (!ancestors.Contains(anc))
ancestors.Add(anc);
}
if (!ancestors.Contains(parent))
ancestors.Add(parent);
}
Type[] result = new Type[ancestors.Count];
ancestors.CopyTo(result, 0);
return result;
}