To modify the behaviour of copy to be more appropriate for your class, the facility is provided via #postCopy.
The basic copy implementation is as follows.
copy
^ self shallowCopy postCopy
specializing #postCopy for your class, it can perfrom further copies of its inst vars if needed.
postCopy
instVarWithCollection := instVar withCollection copy.
So now the collection is a different collection although it contains the same elements.
best regards
Keith