The worry is caused by the fact that I do not want to pollute the protocol; this is not just about GTInspector, but also about other classes such as the TreeModel.
So, imagine following hierarchy; there are some "base" classes and then unlimited number of packages, each with their own hierarchy.

���
Now I could either have long switch (if/else/isKindOf:/isMemberOf:) in TreeModel to specify icon, label, children and so forth for each of those elements which is a) mess, and b) doesn't actually work because not all packages might be loaded (this is what I have now, and instead of classes I use symbols... and it's steaming mess).
Alternatively I could somehow use visitor, which would mean that I would have visitor for each behavior: ChildrenVisitor, IconVisitor, ...; and then there would be a method for each object. IconVisitor>>bormStateVisitor: ...
There is already visible name conflict (the visitor would have to add the package name to the method which would mean special methods also on the object's side) plus the methods themselves are related to the packages, so basically I would have to have "FsmIconVisitor", "BormIconVisitor", etc. Which is NxM visitors (number of behaviors x number of packages)... and that's a lot of code. At this moment this seems like the "best" way, but to me it feels like a very bad way to do this.
Not sure if I made it any clearer though. :)
Peter