A project to try and avoid dynamic polymorphism
Whenever possible I prefer static polymorphism to dynamic polymorphism, especially in inheritence. This was my attempt at getting to it. Summary: Unfortunately I had to trade readability for better static analysis.