generic
type Value_Type is private;
package Predicate5 is
type MT (Has : Boolean := False) is record
case Has is
when False =>
null;
when True =>
MX : Value_Type;
end case;
end record;
function Foo (M : MT) return Boolean is (not M.Has);
subtype LT is MT with Dynamic_Predicate => not LT.Has;
function Bar (M : MT) return Boolean is (Foo (M));
procedure Foo;
end;