generic type Item is private; package stacks is type stack is limited private; function newstack return Stack; -- "new" is reserved. function pop( the_stack:Stack) return Stack; function push( the_stack:Stack; an_item:Item) return Stack; function top( the_stack: Stack) return Item; function empty( the_stack:Stack) return Boolean; stack_empty: exception; private type stack_node; type stack is access stack_node; end stacks;