1package Deques is
2
3    type Deque (<>) is tagged limited private;
4    function Create return Deque;
5    procedure Pop (D : access Deque);
6
7    type Sequence is limited interface;
8    type P_Deque is new Deque and Sequence with private;
9    function Create return P_Deque;
10
11private
12    type Deque is tagged limited null record;
13    type P_Deque is new Deque and Sequence with null record;
14end Deques;
15