internal IEnumerable<Symbol> GetAllBaseClasses()
{
List<Symbol> unprocessed = BaseClasses.ToList();
while (unprocessed.Count > 0)
{
List<Symbol> symbols = unprocessed;
unprocessed = new List<Symbol>();
foreach (var symbol in symbols)
{
yield return symbol;
unprocessed.AddRange(symbol.BaseClasses);
}
}
}