The document discusses various approaches for representing enemies in first-person shooter games that can change their behavior, including the strategy pattern. It then examines different techniques for implementing object reclassification, where an object can change class during its lifetime. This includes Smalltalk's "become" method, Gilgul which uses indirect pointers and handles reclassification of objects with methods on the stack, and Fickle which introduces type safety through a structured class hierarchy. Predicate classes are also covered, which combine multiple dispatch with automatic reclassification when predicates are fulfilled. Issues around implementation, type safety and handling halfway executed methods are discussed for each approach.