<p>Roy<br/>
I added a comment on my blog that points to what I've
done. In terms of how a plugin is loaded - it's a parcel
(VisualWorks Smalltalk-speak). A parcel is kind of like
a Java JAR file, except that:</p>
* The code can be for arbitrary classes
* The code can change arbitrary methods in any object in
the system
<p>As to reflection - well, Smalltalk (and
Lisp, of course) pretty much invented reflection. The
capabilities go well beyond what's possible in C# or
Java (or any CLR/JVM based language, for that matter). A
good example of what's possible is to consider what you
can accomplish with
#doesNotUnderstand:</p>
<p>In Smalltalk, a message that is not
understood ends up generating a MessageNotUnderstood
exception. However, any object can implement a
#doesNotUnderstand: method, and then handle that
situation locally. It's not something you do every day -
but it does make proxies trivial to implement. We don't
need a vendor framework for proxy operations; they are
effectively free....</p>