'From Croquet1.0beta of 11 April 2006 [latest update: #1] on 24 August 2008 at 10:51:15 am'! !BlockClosure methodsFor: '*Scripting-Extensions' stamp: 'eem 8/24/2008 10:43'! asAsyncScriptMessageIn: scriptPerformer arguments: args "Convert the receiver into an appropriate ScriptMessageSend" ^self scriptEvaluationSelector ifNil: [super asAsyncScriptMessageIn: scriptPerformer arguments: args] ifNotNil: [:selector| Processor activeIsland asyncScriptMessageSend receiver: scriptPerformer selector: selector arguments: {self},args]! ! !BlockClosure methodsFor: '*Scripting-Extensions' stamp: 'eem 8/24/2008 10:42'! asScriptMessageIn: scriptPerformer arguments: args "Convert the receiver into an appropriate ScriptMessageSend" ^self scriptEvaluationSelector ifNil: [super asAsyncScriptMessageIn: scriptPerformer arguments: args] ifNotNil: [:selector| ScriptMessageSend receiver: scriptPerformer selector: selector arguments: {self},args]! ! !BlockClosure methodsFor: '*Scripting-Extensions' stamp: 'eem 8/24/2008 10:41'! isScriptDescriptorIn: aScript "Answer if the receiver is equivalent to the argument script, a ScriptMessageSend" ^aScript selector == self scriptEvaluationSelector and: [(aScript arguments at: 1) == self]! ! !BlockClosure methodsFor: '*Scripting-Extensions' stamp: 'eem 8/24/2008 10:46'! scriptEvaluationSelector "Answer the right selector to evaluate the receiver when converted to a script, or nil if there isn't one." ^numArgs <= 4 ifTrue: [#( evaluate: evaluate:with: evaluate:with:with: evaluate:with:with:with: evaluate:with:with:with:with:) at: numArgs + 1]! !