procedure Test is
type Cow is null record;
type Ox is null record;
procedure Moo(N : Cow) is
begin
null;
end Moo;
procedure Moo(N : Ox) is
begin
null;
end Moo;
function Bovine return Ox is
begin
return (null record);
end Bovine;
function Bovine return Cow is
begin
return (null record);
end Bovine;
begin
Moo(Cow'(Bovine));
end Test;
cHJvY2VkdXJlIFRlc3QgaXMKICB0eXBlIENvdyBpcyBudWxsIHJlY29yZDsKICB0eXBlIE94IGlzIG51bGwgcmVjb3JkOwogIHByb2NlZHVyZSBNb28oTiA6IENvdykgaXMKICBiZWdpbgogICAgbnVsbDsKICBlbmQgTW9vOwogIHByb2NlZHVyZSBNb28oTiA6IE94KSBpcwogIGJlZ2luCiAgICBudWxsOwogIGVuZCBNb287CiAgZnVuY3Rpb24gQm92aW5lIHJldHVybiBPeCBpcwogIGJlZ2luCiAgICByZXR1cm4gKG51bGwgcmVjb3JkKTsKICBlbmQgQm92aW5lOwogIGZ1bmN0aW9uIEJvdmluZSByZXR1cm4gQ293IGlzCiAgYmVnaW4KICAgIHJldHVybiAobnVsbCByZWNvcmQpOwogIGVuZCBCb3ZpbmU7CmJlZ2luCiAgTW9vKENvdycoQm92aW5lKSk7CmVuZCBUZXN0Ow==