| --  Copyright 2020-2022 Free Software Foundation, Inc. | 
 | -- | 
 | --  This program is free software; you can redistribute it and/or modify | 
 | --  it under the terms of the GNU General Public License as published by | 
 | --  the Free Software Foundation; either version 3 of the License, or | 
 | --  (at your option) any later version. | 
 | -- | 
 | --  This program is distributed in the hope that it will be useful, | 
 | --  but WITHOUT ANY WARRANTY; without even the implied warranty of | 
 | --  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
 | --  GNU General Public License for more details. | 
 | -- | 
 | --  You should have received a copy of the GNU General Public License | 
 | --  along with this program.  If not, see <http://www.gnu.org/licenses/>. | 
 |  | 
 | with Pkg; use Pkg; | 
 | with System; | 
 |  | 
 | procedure Prot is | 
 |  | 
 |    protected type Obj_Type | 
 |      (Ceiling_Priority: System.Priority := System.Priority'Last) | 
 |    with Priority => Ceiling_Priority | 
 |    is | 
 |       procedure Set (V : Integer); | 
 |       function Get return Integer; | 
 |    private | 
 |       Local : Integer := 0; | 
 |    end Obj_Type; | 
 |  | 
 |    protected body Obj_Type is | 
 |       procedure Set (V : Integer) is | 
 |       begin | 
 |          Local := V;  -- STOP | 
 |       end Set; | 
 |  | 
 |       function Get return Integer is | 
 |       begin | 
 |          return Local; | 
 |       end Get; | 
 |    end Obj_Type; | 
 |  | 
 |    Obj : Obj_Type; | 
 | begin | 
 |    Obj.Set (5); | 
 |    Pkg.Do_Nothing(Obj'Address); | 
 | end Prot; |