[comp.lang.smalltalk] Saving recursive lists to files in

johnson@p.cs.uiuc.edu (05/08/89)

storeOn: does not work for circular data structures, because it
tries to do a depth-first traversal of the data structure.  You 
have to write a special version of storeOn: for recursive objects.
The general idea is to write a storeOn:using: method that also
takes a dictionary as an argument.  The dictionary maps each
component of the structure to a name.  The component is only
written out once, but its name can be used many times.

Steve Vegdahl had a nice article explaining this in OOPSLA'86,
and Tektronix versions of Smalltalk include his more general solution.