public static class Cage { private Set pen = new HashSet(); public void add(T animal) { pen.add(animal); } /* It's OK to put subclasses into a cage of super class */ public void transferTo(Cage cage) { cage.pen.addAll(this.pen); } public void showAnimals() { System.out.println(pen); } }