'From Squeak3.6 of ''6 October 2003'' [latest update: #5424] on 18 December 2003 at 11:37:45 am'! !Class methodsFor: 'compiling' stamp: 'sumim 12/18/2003 11:31'! attribute: instVarSym self attribute: instVarSym value: nil! ! !Class methodsFor: 'compiling' stamp: 'sumim 12/18/2003 11:30'! attribute: instVarSym value: anObject | selectors setterSym | (self class allInstVarNames includes: instVarSym) ifFalse: [ self class addInstVarName: instVarSym asString]. selectors := self selectors. (selectors includes: instVarSym) ifFalse: [ self define: instVarSym as: '^ ', instVarSym classified: 'accessing']. setterSym := (instVarSym, ':') asSymbol. (selectors includes: setterSym) ifFalse: [ self define: setterSym, ' x' as: instVarSym, ' := x' classified: 'accessing']. self perform: setterSym with: anObject! ! !Class methodsFor: 'compiling' stamp: 'sumim 12/17/2003 00:16'! define: messageTemplateStr as: codeStr self define: messageTemplateStr as: codeStr classified: nil! ! !Class methodsFor: 'compiling' stamp: 'sumim 12/18/2003 10:51'! define: messageTemplateStr as: codeStr classified: categoryStr | code | code := String streamContents: [ :stream | stream nextPutAll: messageTemplateStr; cr; tab; nextPutAll: codeStr]. self class compile: code classified: categoryStr! ! !Symbol methodsFor: 'converting' stamp: 'sumim 12/18/2003 11:25'! asClone: protoClass | childClass defaultInstVarNames instVarNames | protoClass subclass: self instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: (Preferences parameterAt: #userScriptCategory ifAbsentPut: 'Category-UserScript'). childClass := Smalltalk at: self. defaultInstVarNames := Object class allInstVarNames. instVarNames := protoClass class allInstVarNames reject: [ :each | defaultInstVarNames includes: each ]. instVarNames do: [ :each | childClass instVarNamed: each put: (protoClass instVarNamed: each) copy]. ^ childClass! !