package pkg is
  type protected_t is protected
  end protected protected_t;

  procedure proc(variable prot : inout protected_t; variable result : out boolean);
end package;

package body pkg is
  type protected_t is protected body
  end protected body protected_t;

  procedure proc(variable prot : inout protected_t; variable result : out boolean) is
  begin
  end;
end package body pkg;

use work.pkg.all;

package other_pkg is
  procedure other_proc(variable result : out boolean);
  alias other_proc is proc[protected_t, boolean];
  impure function other_proc return boolean;
end package;