A re-implementation of the Observer pattern in Java using generics.