Data Abstraction / Mutability.
Rewrite the toy GrowList class so that it is immutable. Keep the same representation. Follow Liskov. (We'll cover additional constraints from Bloch later.)
Only code is necessary for this assignment.
Note that although you technically need to split one of the mutators into an observer and a producer, the observer is already in the public API.
Create a small but reasonable set of JUnit tests.