Normally the type of the field is used as delegate type. However, to choose a different type to delegate, you can list one (or more) types here. Note that types with
type arguments can only be done as a field type. A solution for this is to create a private inner interface/class with the appropriate types extended, and possibly
with all methods you'd like to delegate listed, and then supply that class here. The field does not actually have to implement the type you're delegating; the
type listed here is used only to determine which delegate methods to generate.
NB: All methods in Object, as well as canEqual(Object other) will never be delegated.