The Design and Implementation of AspectC++
design patterns : elements of reusable object - oriented software .