// Names, references and objects that hold objects
A name refers to an object, so two names can share one object. A function gets a new name for each object it is passed. Pip now has samples: a Rover holds Sample objects in a list and hands out copies so outside code cannot change it by accident.