{ %NORUN } {$mode delphi} type TNullable = record public type PT = ^T; public class operator Implicit(A: PT): TNullable; class operator Implicit(A: T): TNullable; class operator Equal(A: TNullable; B: PT): Boolean; class operator Equal(A: TNullable; B: T): Boolean; end; TRec = record end; class operator TNullable.Implicit(A: PT): TNullable; begin end; class operator TNullable.Implicit(A: T): TNullable; begin end; class operator TNullable.Equal(A: TNullable; B: PT): Boolean; begin end; class operator TNullable.Equal(A: TNullable; B: T): Boolean; begin end; var x: TNullable; y: TNullable; begin x := nil; x := 1; if x = nil then ; if x = 1 then ; end.