1) What have we got?
We have some "Collection" class which has some collection of elements.
public class Collection
private List<String> elements = new ArrayList<>();
public Collection addElement(String element)
public Collection removeElement(String element)
2) What is our goal?
We would like to client allow traversing elements but we don't want to give him access to inner structure(elements).