Gem #9: Classwide operations, iterators, and generic algorithms

Ada Gem #9 - A generic algorithm manipulates container elements in a way that is completely general, working with any container (including arrays) that provides a way to iterate over its elements. In this example we systematically alter an operation for copying containers within a common class, converting it to a generic algorithm that ultimately works for any kind of container.