For maximum flexibility, use wildcard types on input parameters that represent producers or
It also helps clarify the 'barebones' invariants of the object being operated on. So for example by doing <? extends Animals> instead of <Dog> or <Animal> helps clarify and codify that the method works on anything that has the properties of an Animal, not just a Dog or something like that