package Aggr25 is

  type T_A is (A, B , C ,D);

  subtype Has_B_D is T_A with Static_Predicate => Has_B_D in B | D;

  type Obj_T (Kind : T_A) is
    record
       case Kind is
        --OK-- when A | C => null; --OK--
        when Has_B_D  =>  Value : Boolean;
        --BAD-- when A | C => null;
        when others => null;
      end case;
    end record;

  type T is access Obj_T;

  Unavailable : constant T := new Obj_T'(Kind => A);

  procedure Foo;

end Aggr25;