import java.util.ArrayList; import java.util.List; class Main { void suspicious(Object[][] data) { List<String> stringList = new ArrayList<>(); stringList.remove(<warning descr="'List<String>' may not contain objects of type 'Object[][]'">data</warning>); stringList.remove(<warning descr="'List<String>' may not contain objects of type 'Object[]'">data[0]</warning>); stringList.remove(<warning descr="Suspicious call to 'List.remove'">data[0][0]</warning>); stringList.contains(<warning descr="'List<String>' may not contain objects of type 'Object[][]'">data</warning>); stringList.contains(<warning descr="'List<String>' may not contain objects of type 'Object[]'">data[0]</warning>); stringList.contains(<warning descr="Suspicious call to 'List.contains'">data[0][0]</warning>); M<? extends String> m = new M<>(); stringList.contains(m.get()); M<? super String> m1 = new M<>(); stringList.contains(<warning descr="Suspicious call to 'List.contains'">m1.get()</warning>); M<?> m2 = new M<>(); stringList.contains(<warning descr="Suspicious call to 'List.contains'">m2.get()</warning>); } class M<T> { public T get() { return null; } } }