public override List inheritance()
{
if (m_inheritance == null)
{
Hashtable map = new Hashtable();
List acc = new List(Sys.TypeType);
// handle Void as a special case
if (this == Sys.VoidType)
{
acc.add(this);
return(m_inheritance = acc.trim());
}
// add myself
map[m_qname] = this;
acc.add(this);
// add my direct inheritance inheritance
addInheritance(@base(), acc, map);
List m = mixins();
for (int i = 0; i < m.sz(); i++)
{
addInheritance((Type)m.get(i), acc, map);
}
m_inheritance = acc.trim().ro();
}
return(m_inheritance);
}