| 
					
				 | 
			
			
				@@ -98,6 +98,26 @@ referencedClasses: ["DoIt"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_compileExpression_on_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "compileExpression:on:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aString,anObject){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+_st(self)._currentClass_(_st(anObject)._class()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+_st(self)._source_(_st(_st("xxxDoIt ^[").__comma(aString)).__comma("] value")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=_st(self)._compileNode_(_st(self)._parse_(_st(self)._source())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, function($ctx1) {$ctx1.fill(self,"compileExpression:on:",{aString:aString,anObject:anObject}, smalltalk.Compiler)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aString", "anObject"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "compileExpression: aString on: anObject\x0a\x09self currentClass: anObject class.\x0a\x09self source: 'xxxDoIt ^[', aString, '] value'.\x0a\x09^self compileNode: (self parse: self source)", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["currentClass:", "class", "source:", ",", "compileNode:", "parse:", "source"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_compileNode_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -180,23 +200,41 @@ selector: "evaluateExpression:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 fn: function (aString){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var result,method; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.withContext(function($ctx1) { 
var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-method=_st(self)._eval_(_st(self)._compileExpression_(aString)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-_st(method)._category_("doIt"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-_st((smalltalk.DoIt || DoIt))._addCompiledMethod_(method); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-result=_st(_st((smalltalk.DoIt || DoIt))._new())._doIt(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-_st((smalltalk.DoIt || DoIt))._removeCompiledMethod_(method); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$1=result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=_st(self)._evaluateExpression_on_(aString,_st((smalltalk.DoIt || DoIt))._new()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}, function($ctx1) {$ctx1.fill(self,"evaluateExpression:",{aString:aString,result:result,method:method}, smalltalk.Compiler)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, function($ctx1) {$ctx1.fill(self,"evaluateExpression:",{aString:aString}, smalltalk.Compiler)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 args: ["aString"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "evaluateExpression: aString\x0a\x09\x22Unlike #eval: evaluate a Smalltalk expression and answer the returned object\x22\x0a\x09| result method |\x0a    method := self eval: (self compileExpression: aString).\x0a    method category: 'doIt'.\x0a\x09DoIt addCompiledMethod: method.\x0a\x09result := DoIt new doIt.\x0a\x09DoIt removeCompiledMethod: method.\x0a\x09^result", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["eval:", "compileExpression:", "category:", "addCompiledMethod:", "doIt", "new", "removeCompiledMethod:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "evaluateExpression: aString\x0a\x09\x22Unlike #eval: evaluate a Smalltalk expression and answer the returned object\x22\x0a\x09^ self evaluateExpression: aString on: DoIt new", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["evaluateExpression:on:", "new"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: ["DoIt"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_evaluateExpression_on_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "evaluateExpression:on:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aString,anObject){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var result,method; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+method=_st(self)._eval_(_st(self)._compileExpression_on_(aString,anObject)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+_st(method)._category_("xxxDoIt"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+_st(_st(anObject)._class())._addCompiledMethod_(method); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+result=_st(anObject)._xxxDoIt(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+_st(_st(anObject)._class())._removeCompiledMethod_(method); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, function($ctx1) {$ctx1.fill(self,"evaluateExpression:on:",{aString:aString,anObject:anObject,result:result,method:method}, smalltalk.Compiler)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aString", "anObject"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "evaluateExpression: aString on: anObject\x0a\x09\x22Unlike #eval: evaluate a Smalltalk expression with anObject as the receiver and answer the returned object\x22\x0a\x09| result method |\x0a    method := self eval: (self compileExpression: aString on: anObject).\x0a    method category: 'xxxDoIt'.\x0a\x09anObject class addCompiledMethod: method.\x0a\x09result := anObject xxxDoIt.\x0a\x09anObject class removeCompiledMethod: method.\x0a\x09^result", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["eval:", "compileExpression:on:", "category:", "addCompiledMethod:", "class", "xxxDoIt", "removeCompiledMethod:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_install_forClass_category_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 |