1generic 2 type Value_Type is private; 3package Predicate4_Pkg is 4 type MT (Has : Boolean := False) is record 5 case Has is 6 when False => 7 null; 8 when True => 9 MX : Value_Type; 10 end case; 11 end record; 12 13 function Foo (M : MT) return Boolean is (not M.Has); 14 subtype LT is MT with Dynamic_Predicate => not LT.Has; 15 function Bar (M : MT) return Boolean is (Foo (M)); 16end; 17