If you are using generics, you should make sure that :
The only way to invoke that method is to pass Animal list as argument, no subtypes.
Or the other ways are to use the wildcard (extends & super, ?, conditions apply) ... but what about return type?
i saw questions that used generic methods and returned subtype of declared return type from methods.