public class OverlyStrongTypeCastInspection{ String test1(Bar bar){ // Inspection says this cast can be weakened to MyIterator // when it can't and the quick fix breaks the code. return ((MyBar) bar).foos.string; } String test2(Object bar){ // inspection does not suggest that (MyBar) can be weakened to (Bar) ((MyBar) bar).arg(); // inspection does not suggest that (MyBar) can be weakened to (Bar) return ((MyBar) bar).string; } } interface Bar{ String string = "bla"; void arg(); } class MyBar implements Bar{ Foos foos; public void arg(){ } } class Foos{ public String string = ""; public void foo(){ } }