Reflection
Accessing private and protected member variables
Feature detection of classes or objects
Testing privateprotected methods