A small Java library providing a typesafe model/listener pattern through class generation