Sample demonstrating use of generic interfaces and abstract classes