Problem Statement
Publish (to GitHub) the method/function "drawAll" that will draw a collection of graphic elements.
Our High Level Algorithm
Nice and simple
drawAll(elements) {
	Iterate over collection of graphic elements {
		draw each element
	}
}
Bump in the Road
A little challenge has come up.

We find out that the parameter "elements" could be many different collection types (unlimited).
A Solution for Each
A solution (code) for each collection type
drawAll(sortedElements)
drawAll(orderedElements)
drawAll(linkedElements)
drawAll(superFastElements)
etc
Do We Need Solution for Each Collection Type?

No. And remember the types are unlimited.

Let's think about context again.

If a collection can iterate, our algorithm is happy.

So we generalize to a common type Collection (or List, etc), which can iterate.