▁Element _ Type ); ▁▁▁▁ ▁Overflow ▁: ▁exception ; ▁▁▁▁ ▁Under flow ▁: ▁exception ; ▁ ▁private ▁▁▁▁ ▁sub type ▁Index _ Type ▁is ▁Size _ Type ▁range ▁ 1 ▁.. ▁Max _ Size ; ▁▁▁▁ ▁type ▁Vector ▁is ▁array ▁( Index _ Type ▁range ▁< >) ▁of ▁Element _ Type ; ▁▁▁▁ ▁type ▁Stack ▁( Al located _ Size ▁: ▁Size _ Type ▁:= ▁ 0 ) ▁is ▁record ▁▁▁▁▁▁▁ ▁Top ▁: ▁Index _ Type ; ▁▁▁▁▁▁▁ ▁Storage ▁: ▁Vector ▁( 1 ▁.. ▁Al located _ Size ); ▁▁▁▁ ▁end ▁record ; ▁ ▁end ▁Stack s ; ▁ ▁Inst anti ating ▁the ▁generic ▁package : ▁▁ ▁type ▁Book mark _ Type ▁is ▁new ▁Natural ; ▁ ▁-- ▁records ▁a ▁location ▁in ▁the ▁text ▁document ▁we ▁are ▁editing ▁▁ ▁package ▁Book mark _ Stack s ▁is ▁new ▁Stack s ▁( Max _ Size ▁=> ▁ 2 0 , ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ ▁▁▁▁▁▁▁▁ ▁Element _ Type ▁=> ▁Book mark _ Type ); ▁ ▁-- ▁All ows ▁the ▁user ▁to ▁jump ▁between ▁recorded ▁locations ▁in ▁a ▁document ▁ ▁Using ▁an ▁instance ▁of ▁a ▁generic ▁package : ▁▁ ▁type ▁Document _ Type ▁is ▁record ▁▁▁▁ ▁Cont ents ▁: ▁Ada . Strings . Un bounded . Un bounded _ String ; ▁▁▁▁ ▁Book marks ▁: ▁Book mark _ Stack s . Stack ; ▁ ▁end ▁record ; ▁▁ ▁procedure ▁Edit ▁( Document _ Name ▁: ▁in ▁String ) ▁is ▁▁▁ ▁Document ▁: ▁Document _ Type ; ▁ ▁begin ▁▁▁ ▁-- ▁Initial ise ▁the ▁stack ▁of ▁book marks :