class WildcardSuper { interface Consumer<T> { void consume(T object); } Consumer<String> testCast(Consumer<Object> consumer) { return cast(consumer); } private static <T> Consumer<T> cast(final Consumer<? super T> consumer) { throw new RuntimeException(); } }