private void emitMixinRouters()
{
// short circuit if no direct mixins implemented
if (parent.mixins().isEmpty()) return;
// first we have to find all the mixins I inherit thru my
// direct mixin inheritances (but not my class extension) - these
// are the ones I need routers for (but I can skip generating
// routers for any mixins implemented by my super class)
Hashtable acc = new Hashtable();
findMixins(parent, acc);
// emit routers for concrete instance methods
IEnumerator en = acc.Values.GetEnumerator();
while (en.MoveNext())
{
Type mixin = (Type)en.Current;
emitMixinRouters(mixin);
}
}