public class Passenger { public static class PassParent { } public static class PassChild extends PassParent { } public PassParent provideNullable(int p) { return p > 0 ? new PassChild() : null; } public void test1() { PassParent pass = provideNullable(1); assert pass != null; accept1((PassChild) pass); } public void test2() { PassParent pass = provideNullable(1); if (1 == 2) { assert pass != null; accept2((PassChild) pass); } accept2((PassChild) pass); } public void accept1(PassChild p) { } public void accept2(PassChild p) { } }