// If class foo { Int y; } class bar { Int h; } class bof extends bar {} class IfTest { Null foo() { Int t = 0; Null n = null; bar b = new bar(2); bof z = new bof(3); if(k) {} else {}; // 1/7 failure of clause 1 (nonexistent condition) if(n) {} else {}; // 2/7 failure of clause 1 (condition not Int) if(t) {gorh g = null;return g} else 2; // 3/7 failure of clause 2 (unknown type) if(t) 2 else {gorh g = null;return g }; // 4/7 failure of clause 2 (unknown type) if(t) {foo f = new foo(1);return f} else 2; // 5/7 failure of clause 3 (LUB not found) if(t) 2 else {foo f = new foo(2);return f}; // 6/7 failure of clause 3 (LUB not found) bof y = if (t) b else z; // 7/7 failure of clause 3 (return type mismatch) if(t) 2 else 3; // success if(t) b else z; // success } } 1