function a(x:boolean): boolean;
begin
'a called'.Println;
result := x
end;
function b(x:boolean): boolean;
'b called'.Println;
var x := a(false) and b(true); // a called
var y := a(true) or b(true) // a called
end.