Well, #initKnownRenames came after my involvement, but there are several options available here:

- #initKnownRenames can specify a class to be substitued for another encountered in the input stream, whether the class in the stream exists in the image or not. So, you can just create something different if you like.

- #multiNewParagraphttfclpomsswfpp0, etc. (in SmartRefStream)) allows specific versions (all the ttfcl... stuff) to be substituted with something different.

- #convertToCurrentVersion:refStream: (in various classes) allows newly created instances to get their inst vars modified to current standards, like if 'name' used to be a String and now it's a Name, you might use this to fix old instances that still have Strings

So, if the issue is about fixing paragraphs or projects coming in from a ref stream, then #convertToCurrentVersion:refStream: will probably let you do what you want.

On 10/8/17 6:17 PM, H. Hirzel wrote:
On 10/8/17, Bob Arning <arning315@comcast.net> wrote:
#convertToCurrentVersion:refStream: might be used to fix up such problems
Seems to be the regular way to do this whereas

SmartRefStream>>initKnownRenames

looks more like a hack. However it is not etoys specific as it is
present in Squeak 5.0 (screen shot)


#initKnownRenames  is called in


SmartRefStream>>initShapeDicts


It has a flag #bobconv

Looks like unfinished business.  Bob, what would you see as the way forward?

initShapeDicts
	"Initialize me. "

	self flag: #bobconv.	

	"These must stay constant.  When structures read in, then things can change."
	steady := {Array. Dictionary. Association. ByteString. SmallInteger.
Character} asSet.

	renamed ifNil: [
		renamed := Dictionary new.  "(old class name symbol -> new class name)"
		renamedConv := Dictionary new "(oldClassNameSymbol ->
conversionSelectorInNewClass)"
	].
	self initKnownRenames


On 10/8/17 5:33 PM, Tobias Pape wrote:
So 'presentationText' and  'presentationLines' will shadow 'caretRect' and
'showCaret'...