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.