The visitor pattern as a reusable, generic, type-safe component
Predicate Dispatching: A Unified theory of Dispatch