An Embedded Declarative Language for Hierarchical Object Structure Traversal
design patterns : elements of reusable object - oriented software .