...
- Adding or overriding instance methods
- Adding methods to an instance
- Adding or overriding static methods
- Adding or overriding properties
- Adding or overriding constructors
- Adding methods on interfaces
- Dynamically creating method names
- Overriding invokeMethod, getProperty and setProperty
- Overriding invokeMethod for static methods
- Evaluating MetaClass instances at runtime
- Borrowing methods from other classes