Find why this helper does not establish that every returned element is a `T`.
Java
import java.util.List;
public class Main {
@SuppressWarnings("unchecked")
static <T> List<T> castList(Object value) {
if (!(value instanceof List<?>)) {
throw new IllegalArgumentException("not a list");
}
return (List<T>) value;
}
}