protected objectのprivateが微妙に不便な件

protected内のprivateな部分に型の定義を宣言することは出来ないのだが、これが微妙にイライラする。

with Ada.Containers.Indefinite_Doubly_Linked_Lists;

package Message_Buffers is
   type Private_Buffer is private; -- 別に公開したくない
   protected type Message_Buffer is
      entry Write(Item : String);
      entry Read(Item : out String);
   private
      -- ここに書けない!
      -- type String_Access is access all String;
      -- package String_Access_Lists is new Ada.Containers.Indefinite_Doubly_Linked_Lists(String_Access);
      Buffer : Private_Buffer;
   end Message_Buffer;

private
   type String_Access is access all String;
   package String_Access_Lists is new Ada.Containers.Indefinite_Doubly_Linked_Lists(String_Access);
   type Private_Buffer is new String_Access_Lists.List with null record; -- ずいぶん冗長なことに
end Message_Buffers;

Private_Buffer自体は内部でしか使わないので、外に公開したくな。しかし、Message_Bufferを公開する以上、それに先だって宣言しなければエラーとなる。privateだけ分割できないものか。