with Unchecked_Deallocation; package body Prot2_Pkg2 is protected type Rec is private M : T; end Rec; protected body Rec is end; procedure Create (B : out Id) is begin B := new Rec; end; procedure Delete (B : in out Id) is procedure Free is new Unchecked_Deallocation(Object => Rec, Name => Id); begin Free (B); end; end Prot2_Pkg2;