What happens if I call "new KList(new KList())". Which constructor gets accessed? It should be possible to refactor out the copy constructor; shallowCopy is the only place that uses it.