The wildcard ? extends Object is equivalent to the unbounded wildcard ?.
Two type arguments are provably distinct if one of the following is true:
• Neither argument is a type variable or wildcard, and the two arguments are not
the same type.
• One type argument is a type variable or wildcard, with an upper bound (from
capture conversion (§5.1.10), if necessary) of S; and the other type argument T
is not a type variable or wildcard; and neither |S|