I have an interface MessageHandler which takes a generic type T and an implementation MessageHandlerImpl which operates on concrete type CustomObject. And then I am using t