When you're implementing an unbounded type you should almost always override the default Adjust and Finalize procedures - if you don't you're probably doing something wrong. As a result, any later finalizing we did would affect other stacks, even if they shouldn't. If we didn't override Finalize, we wouldn't Free the data nodes that we should. This implements a simple generic stack of Items. David A. Wheeler.
Stacks are equal if lengths equal and each item in order is equal.
Since the node wasn't passed in or out of anything, we can leave it as an incomplete type definition and complete the definition in the generic package body. Since it's a generic, we have to instantiate the generic with a specific type to use it. Dummy is now 1. The generic package body implements the operations defined by the generic package declaration using access types as we've discussed.