Case 1 works but Case 3 does not work because in Case 1 E should be of type CharSequence and String implements CharSequence so condition satisfies with compile time type checking
and in Case 3 list is holding objects of type Object which do not implements CharSequence.
A wildcard can have only one bound, either a lower or an upper bound. A list of wildcard bounds is not permitted.
A type parameter, in constrast, can have several bounds, but there is no such thing as a lower bound for a type parameter like E super CharSequence