package P is end P; function P.Func return Boolean is begin return True; end P.Func; function P.Func return Boolean; function P.GFunc return Boolean is begin return True; end P.GFunc; generic type T is private; function P.GFunc return Boolean; generic type T is private; package P.GPack is end P.GPack; procedure P.GProc is begin null; end P.GProc; generic type T is private; procedure P.GProc; package P.Pack is end P.Pack; with P.Func; private function P.PFunc return Boolean renames P.Func; with P.GFunc; private generic function P.PGFunc renames P.GFunc; with P.GPack; private generic package P.PGPack renames P.GPack; with P.GProc; private generic procedure P.PGProc renames P.GProc; with P.Pack; private package P.PPack renames P.Pack; with P.Proc; private procedure P.PProc renames P.Proc; procedure P.Proc is begin null; end P.Proc; procedure P.Proc; with P.PProc; with P.PFunc; with P.PPack; with P.GProc; with P.GFunc; with P.GPack; procedure P.Test is begin null; end P.Test; procedure P.Test;