with D;
package P is

    subtype T1 is Natural;

    type Tt is limited private;

    function F1 (A, C : Natural; B : Positive; D : T1) return String;

    procedure P1 (A : in out Positive; C : out Character; D : in Integer);
    pragma Nickname ("Fred");

    procedure P1 (A, B : in out Positive; C : out Character; D : in Integer);
    pragma Nickname ("Bill");

    function "+" (A, B : T1) return T1;
    function "=" (A, B : Tt) return Boolean;
private
    type Tt is new Boolean;

end P;