'From etoys2.2 of 1 October 2007 [latest update: #1768] on 8 November 2007 at 5:44:37 pm'! "Change Set: SISSProxy2-yo Date: 8 November 2007 Author: Yoshiki Ohshima Add a little check so that it doesn't execute arbitrary method."! !SExpElement methodsFor: 'serialization specific' stamp: 'yo 11/8/2007 17:42'! sissReadObjectsAsEtoysProject: aBoolean | to from root ret w sel | to _ SISSDictionaryForReading new initialize. from _ IdentityDictionary new. (elements isNil or: [elements isEmpty]) ifTrue: [ ^ self fromSexp: self from: from to: to. ]. root _ self attributeAt: #root. elements do: [:e | e attributeAt: #idref ifPresent: [:id | from at: id asSymbol put: e ]. ]. aBoolean ifTrue: [ProjectLoading worldLoading: nil]. w _ elements detect: [:e | (e attributeAt: #idref ifAbsent: []) = root]. ret _ self fromSexp: w from: from to: to. from do: [:v | (v keyword = #SISSProxy) ifTrue: [ sel _ (v attributeAt: #selector) asSymbol. (SISSProxy class methodDict includesKey: sel) ifTrue: [ to at: v idref asSymbol put: (SISSProxy perform: sel)]]]. aBoolean ifTrue: [ProjectLoading worldLoading: ret]. to do: [:e | e sissComeFullyUpOnReloadFrom: from to: to]. aBoolean ifTrue: [ProjectLoading worldLoading: nil]. ^ ret. ! !