Some ideas for runtime types. This is fairly experimental and could change. Feedback would be appreciated. I'm considering storing types in Class[] for performance but everyone has to trust everyone else never to modify one of those arrays. I ended up using ImList instead so that no trust is needed.