Create a class like

```
public class Play {
    public static void main(String[] args) throws Exception {
        outer(Integer.class, inner("abc"));
    }

    static <C> void outer(Class<C> c, List<? super C> s){
    }

    static <C> List<C> inner(C c) {
        return null;
    }
}

```

and it compiles in Java 8! (Both in Eclipse 4.5 and JDK1.8\_25) <https://ideone.com/Q9JLHP>

In Eclipse, all the bounds are inferred correctly, but how could `outer`'s capture `Supplier<? super Integer>` ever been satisfied by the argument `Supplier<String>`??

Edit: clarified this is Java 8-specific and made the example less confusing.