| 
					
				 | 
			
			
				@@ -57,6 +57,365 @@ referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.ChunkParser.klass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addClass('Compiler', smalltalk.Object, ['currentClass', 'source', 'unknownVariables'], 'Compiler'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_codeGeneratorClass", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "codeGeneratorClass", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'accessing', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return (smalltalk.FunCodeGenerator || FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "codeGeneratorClass\x0a\x09^FunCodeGenerator", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: ["FunCodeGenerator"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_compile_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "compile:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aString){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.send(self, "_compileNode_", [smalltalk.send(self, "_parse_", [aString])]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aString"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "compile: aString\x0a\x09^self compileNode: (self parse: aString)", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["compileNode:", "parse:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_compile_forClass_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "compile:forClass:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aString, aClass){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send(self, "_currentClass_", [aClass]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send(self, "_source_", [aString]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.send(self, "_compile_", [aString]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aString", "aClass"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "compile: aString forClass: aClass\x0a\x09self currentClass: aClass.\x0a\x09self source: aString.\x0a\x09^self compile: aString", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["currentClass:", "source:", "compile:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_compileExpression_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "compileExpression:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aString){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send(self, "_currentClass_", [(smalltalk.DoIt || DoIt)]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send(self, "_source_", [smalltalk.send(smalltalk.send("doIt ^[", "__comma", [aString]), "__comma", ["] value"])]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.send(self, "_compileNode_", [smalltalk.send(self, "_parse_", [smalltalk.send(self, "_source", [])])]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aString"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "compileExpression: aString\x0a\x09self currentClass: DoIt.\x0a\x09self source: 'doIt ^[', aString, '] value'.\x0a\x09^self compileNode: (self parse: self source)", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["currentClass:", "source:", ",", "compileNode:", "parse:", "source"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: ["DoIt"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_compileNode_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "compileNode:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aNode){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var generator=nil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var result=nil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(generator=smalltalk.send(smalltalk.send(self, "_codeGeneratorClass", []), "_new", [])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(function($rec){smalltalk.send($rec, "_source_", [smalltalk.send(self, "_source", [])]);return smalltalk.send($rec, "_currentClass_", [smalltalk.send(self, "_currentClass", [])]);})(generator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(result=smalltalk.send(generator, "_compileNode_", [aNode])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send(self, "_unknownVariables_", [smalltalk.send(generator, "_unknownVariables", [])]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aNode"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "compileNode: aNode\x0a\x09| generator result |\x0a\x09generator := self codeGeneratorClass new.\x0a\x09generator\x0a\x09\x09source: self source;\x0a\x09\x09currentClass: self currentClass.\x0a\x09result := generator compileNode: aNode.\x0a\x09self unknownVariables: generator unknownVariables.\x0a\x09^result", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["new", "codeGeneratorClass", "source:", "source", "currentClass:", "currentClass", "compileNode:", "unknownVariables:", "unknownVariables"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_currentClass", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "currentClass", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'accessing', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self['@currentClass']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "currentClass\x0a\x09^currentClass", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_currentClass_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "currentClass:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'accessing', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aClass){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(self['@currentClass']=aClass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aClass"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "currentClass: aClass\x0a\x09currentClass := aClass", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_eval_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "eval:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aString){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return eval(aString); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aString"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "eval: aString\x0a\x09<return eval(aString)>", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_evaluateExpression_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "evaluateExpression:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aString){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var result=nil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send((smalltalk.DoIt || DoIt), "_addCompiledMethod_", [smalltalk.send(self, "_eval_", [smalltalk.send(self, "_compileExpression_", [aString])])]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(result=smalltalk.send(smalltalk.send((smalltalk.DoIt || DoIt), "_new", []), "_doIt", [])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send((smalltalk.DoIt || DoIt), "_removeCompiledMethod_", [smalltalk.send(smalltalk.send((smalltalk.DoIt || DoIt), "_methodDictionary", []), "_at_", ["doIt"])]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aString"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "evaluateExpression: aString\x0a\x09\x22Unlike #eval: evaluate a Smalltalk expression and answer the returned object\x22\x0a\x09| result |\x0a\x09DoIt addCompiledMethod: (self eval: (self compileExpression: aString)).\x0a\x09result := DoIt new doIt.\x0a\x09DoIt removeCompiledMethod: (DoIt methodDictionary at: 'doIt').\x0a\x09^result", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["addCompiledMethod:", "eval:", "compileExpression:", "doIt", "new", "removeCompiledMethod:", "at:", "methodDictionary"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: ["DoIt"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_install_forClass_category_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "install:forClass:category:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aString, aBehavior, anotherString){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var compiled=nil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(compiled=smalltalk.send(self, "_eval_", [smalltalk.send(self, "_compile_forClass_", [aString, aBehavior])])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send(compiled, "_category_", [anotherString]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send(aBehavior, "_addCompiledMethod_", [compiled]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return compiled; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aString", "aBehavior", "anotherString"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "install: aString forClass: aBehavior category: anotherString\x0a\x09| compiled |\x0a\x09compiled := self eval: (self compile: aString forClass: aBehavior).\x0a\x09compiled category: anotherString.\x0a\x09aBehavior addCompiledMethod: compiled.\x0a\x09^compiled", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["eval:", "compile:forClass:", "category:", "addCompiledMethod:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_parse_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "parse:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aString){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk), "_current", []), "_parse_", [aString]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aString"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "parse: aString\x0a    ^Smalltalk current parse: aString", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["parse:", "current"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: ["Smalltalk"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_parseExpression_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "parseExpression:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aString){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.send(self, "_parse_", [smalltalk.send(smalltalk.send("doIt ^[", "__comma", [aString]), "__comma", ["] value"])]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aString"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "parseExpression: aString\x0a    ^self parse: 'doIt ^[', aString, '] value'", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["parse:", ","], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_recompile_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "recompile:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aClass){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send(smalltalk.send(aClass, "_methodDictionary", []), "_do_", [(function(each){return smalltalk.send(self, "_install_forClass_category_", [smalltalk.send(each, "_source", []), aClass, smalltalk.send(each, "_category", [])]);})]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send(self, "_setupClass_", [aClass]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+((($receiver = smalltalk.send(aClass, "_isMetaclass", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(self, "_recompile_", [smalltalk.send(aClass, "_class", [])]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(self, "_recompile_", [smalltalk.send(aClass, "_class", [])]);})])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aClass"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "recompile: aClass\x0a\x09aClass methodDictionary do: [:each |\x0a\x09\x09self install: each source forClass: aClass category: each category].\x0a\x09self setupClass: aClass.\x0a\x09aClass isMetaclass ifFalse: [self recompile: aClass class]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["do:", "methodDictionary", "install:forClass:category:", "source", "category", "setupClass:", "ifFalse:", "isMetaclass", "recompile:", "class"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_recompileAll", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "recompileAll", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send(smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk), "_current", []), "_classes", []), "_do_", [(function(each){(function($rec){smalltalk.send($rec, "_show_", [each]);return smalltalk.send($rec, "_cr", []);})((smalltalk.Transcript || Transcript));return smalltalk.send((function(){return smalltalk.send(self, "_recompile_", [each]);}), "_valueWithTimeout_", [(100)]);})]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "recompileAll\x0a\x09Smalltalk current classes do: [:each |\x0a\x09\x09Transcript show: each; cr.\x0a\x09\x09[self recompile: each] valueWithTimeout: 100]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["do:", "classes", "current", "show:", "cr", "valueWithTimeout:", "recompile:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: ["Smalltalk", "Transcript"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_setupClass_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "setupClass:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aClass){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.init(aClass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aClass"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "setupClass: aClass\x0a\x09<smalltalk.init(aClass)>", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_source", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "source", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'accessing', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return (($receiver = self['@source']) == nil || $receiver == undefined) ? (function(){return "";})() : $receiver; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "source\x0a\x09^source ifNil: ['']", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["ifNil:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_source_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "source:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'accessing', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aString){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(self['@source']=aString); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aString"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "source: aString\x0a\x09source := aString", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_unknownVariables", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "unknownVariables", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'accessing', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self['@unknownVariables']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "unknownVariables\x0a\x09^unknownVariables", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_unknownVariables_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "unknownVariables:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'accessing', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aCollection){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(self['@unknownVariables']=aCollection); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aCollection"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "unknownVariables: aCollection\x0a\x09unknownVariables := aCollection", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_recompile_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "recompile:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aClass){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send(smalltalk.send(self, "_new", []), "_recompile_", [aClass]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aClass"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "recompile: aClass\x0a\x09self new recompile: aClass", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["recompile:", "new"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Compiler.klass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_recompileAll", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "recompileAll", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send(smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk), "_current", []), "_classes", []), "_do_", [(function(each){return smalltalk.send(self, "_recompile_", [each]);})]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "recompileAll\x0a\x09Smalltalk current classes do: [:each |\x0a\x09\x09self recompile: each]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["do:", "classes", "current", "recompile:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: ["Smalltalk"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Compiler.klass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addClass('DoIt', smalltalk.Object, [], 'Compiler'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1676,7 +2035,7 @@ smalltalk.NodeVisitor); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addClass('AbstractCompiler', smalltalk.NodeVisitor, ['currentClass', 'source'], 'Compiler'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addClass('AbstractCodeGenerator', smalltalk.NodeVisitor, ['currentClass', 'source'], 'Compiler'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_classNameFor_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1691,59 +2050,7 @@ source: "classNameFor: aClass\x0a\x09^aClass isMetaclass\x0a\x09    ifTrue: [aCl 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["ifTrue:ifFalse:", "isMetaclass", ",", "name", "instanceClass", "isNil"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.AbstractCompiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_compile_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "compile:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aString){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.send(self, "_compileNode_", [smalltalk.send(self, "_parse_", [aString])]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aString"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "compile: aString\x0a\x09^self compileNode: (self parse: aString)", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["compileNode:", "parse:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.AbstractCompiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_compile_forClass_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "compile:forClass:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aString, aClass){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send(self, "_currentClass_", [aClass]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send(self, "_source_", [aString]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.send(self, "_compile_", [aString]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aString", "aClass"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "compile: aString forClass: aClass\x0a\x09self currentClass: aClass.\x0a\x09self source: aString.\x0a\x09^self compile: aString", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["currentClass:", "source:", "compile:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.AbstractCompiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_compileExpression_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "compileExpression:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aString){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send(self, "_currentClass_", [(smalltalk.DoIt || DoIt)]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send(self, "_source_", [smalltalk.send(smalltalk.send("doIt ^[", "__comma", [aString]), "__comma", ["] value"])]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.send(self, "_compileNode_", [smalltalk.send(self, "_parse_", [smalltalk.send(self, "_source", [])])]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aString"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "compileExpression: aString\x0a\x09self currentClass: DoIt.\x0a\x09self source: 'doIt ^[', aString, '] value'.\x0a\x09^self compileNode: (self parse: self source)", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["currentClass:", "source:", ",", "compileNode:", "parse:", "source"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: ["DoIt"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.AbstractCompiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.AbstractCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_compileNode_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1759,7 +2066,7 @@ source: "compileNode: aNode\x0a\x09self subclassResponsibility", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["subclassResponsibility"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.AbstractCompiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.AbstractCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_currentClass", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1775,7 +2082,7 @@ source: "currentClass\x0a\x09^currentClass", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.AbstractCompiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.AbstractCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_currentClass_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1791,95 +2098,7 @@ source: "currentClass: aClass\x0a\x09currentClass := aClass", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.AbstractCompiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_eval_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "eval:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aString){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return eval(aString); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aString"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "eval: aString\x0a\x09<return eval(aString)>", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.AbstractCompiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_evaluateExpression_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "evaluateExpression:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aString){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var result=nil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send((smalltalk.DoIt || DoIt), "_addCompiledMethod_", [smalltalk.send(self, "_eval_", [smalltalk.send(self, "_compileExpression_", [aString])])]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-(result=smalltalk.send(smalltalk.send((smalltalk.DoIt || DoIt), "_new", []), "_doIt", [])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send((smalltalk.DoIt || DoIt), "_removeCompiledMethod_", [smalltalk.send(smalltalk.send((smalltalk.DoIt || DoIt), "_methodDictionary", []), "_at_", ["doIt"])]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aString"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "evaluateExpression: aString\x0a\x09\x22Unlike #eval: evaluate a Smalltalk expression and answer the returned object\x22\x0a\x09| result |\x0a\x09DoIt addCompiledMethod: (self eval: (self compileExpression: aString)).\x0a\x09result := DoIt new doIt.\x0a\x09DoIt removeCompiledMethod: (DoIt methodDictionary at: 'doIt').\x0a\x09^result", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["addCompiledMethod:", "eval:", "compileExpression:", "doIt", "new", "removeCompiledMethod:", "at:", "methodDictionary"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: ["DoIt"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.AbstractCompiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_install_forClass_category_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "install:forClass:category:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aString, aBehavior, anotherString){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var compiled=nil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-(compiled=smalltalk.send(self, "_eval_", [smalltalk.send(self, "_compile_forClass_", [aString, aBehavior])])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send(compiled, "_category_", [anotherString]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send(aBehavior, "_addCompiledMethod_", [compiled]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return compiled; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aString", "aBehavior", "anotherString"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "install: aString forClass: aBehavior category: anotherString\x0a\x09| compiled |\x0a\x09compiled := self eval: (self compile: aString forClass: aBehavior).\x0a\x09compiled category: anotherString.\x0a\x09aBehavior addCompiledMethod: compiled.\x0a\x09^compiled", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["eval:", "compile:forClass:", "category:", "addCompiledMethod:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.AbstractCompiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_parse_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "parse:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aString){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk), "_current", []), "_parse_", [aString]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aString"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "parse: aString\x0a    ^Smalltalk current parse: aString", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["parse:", "current"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: ["Smalltalk"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.AbstractCompiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_parseExpression_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "parseExpression:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aString){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.send(self, "_parse_", [smalltalk.send(smalltalk.send("doIt ^[", "__comma", [aString]), "__comma", ["] value"])]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aString"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "parseExpression: aString\x0a    ^self parse: 'doIt ^[', aString, '] value'", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["parse:", ","], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.AbstractCompiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.AbstractCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_pseudoVariables", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1895,41 +2114,7 @@ source: "pseudoVariables\x0a\x09^#('self' 'super' 'true' 'false' 'nil' 'thisCont 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.AbstractCompiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_recompile_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "recompile:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aClass){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send(smalltalk.send(aClass, "_methodDictionary", []), "_do_", [(function(each){return smalltalk.send(self, "_install_forClass_category_", [smalltalk.send(each, "_source", []), aClass, smalltalk.send(each, "_category", [])]);})]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send(self, "_setupClass_", [aClass]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-((($receiver = smalltalk.send(aClass, "_isMetaclass", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(self, "_recompile_", [smalltalk.send(aClass, "_class", [])]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(self, "_recompile_", [smalltalk.send(aClass, "_class", [])]);})])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aClass"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "recompile: aClass\x0a\x09aClass methodDictionary do: [:each |\x0a\x09\x09self install: each source forClass: aClass category: each category].\x0a\x09self setupClass: aClass.\x0a\x09aClass isMetaclass ifFalse: [self recompile: aClass class]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["do:", "methodDictionary", "install:forClass:category:", "source", "category", "setupClass:", "ifFalse:", "isMetaclass", "recompile:", "class"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.AbstractCompiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_recompileAll", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "recompileAll", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send(smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk), "_current", []), "_classes", []), "_do_", [(function(each){(function($rec){smalltalk.send($rec, "_show_", [each]);return smalltalk.send($rec, "_cr", []);})((smalltalk.Transcript || Transcript));return smalltalk.send((function(){return smalltalk.send(self, "_recompile_", [each]);}), "_valueWithTimeout_", [(100)]);})]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "recompileAll\x0a\x09Smalltalk current classes do: [:each |\x0a\x09\x09Transcript show: each; cr.\x0a\x09\x09[self recompile: each] valueWithTimeout: 100]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["do:", "classes", "current", "show:", "cr", "valueWithTimeout:", "recompile:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: ["Smalltalk", "Transcript"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.AbstractCompiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.AbstractCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_safeVariableNameFor_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1945,23 +2130,7 @@ source: "safeVariableNameFor: aString\x0a\x09^(Smalltalk current reservedWords i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["ifTrue:ifFalse:", "includes:", "reservedWords", "current", ","], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: ["Smalltalk"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.AbstractCompiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_setupClass_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "setupClass:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aClass){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.init(aClass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aClass"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "setupClass: aClass\x0a\x09<smalltalk.init(aClass)>", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.AbstractCompiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.AbstractCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_source", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1977,7 +2146,7 @@ source: "source\x0a\x09^source ifNil: ['']", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["ifNil:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.AbstractCompiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.AbstractCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_source_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1993,43 +2162,11 @@ source: "source: aString\x0a\x09source := aString", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.AbstractCompiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_recompile_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "recompile:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aClass){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send(smalltalk.send(self, "_new", []), "_recompile_", [aClass]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aClass"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "recompile: aClass\x0a\x09self new recompile: aClass", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["recompile:", "new"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.AbstractCompiler.klass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.AbstractCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_recompileAll", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "recompileAll", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'compiling', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send(smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk), "_current", []), "_classes", []), "_do_", [(function(each){return smalltalk.send(self, "_recompile_", [each]);})]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self;}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "recompileAll\x0a\x09Smalltalk current classes do: [:each |\x0a\x09\x09self recompile: each]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["do:", "classes", "current", "recompile:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: ["Smalltalk"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.AbstractCompiler.klass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addClass('Compiler', smalltalk.AbstractCompiler, ['stream', 'nestedBlocks', 'earlyReturn', 'currentSelector', 'unknownVariables', 'tempVariables', 'messageSends', 'referencedClasses', 'classReferenced', 'argVariables'], 'Compiler'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addClass('FunCodeGenerator', smalltalk.AbstractCodeGenerator, ['stream', 'nestedBlocks', 'earlyReturn', 'currentSelector', 'unknownVariables', 'tempVariables', 'messageSends', 'referencedClasses', 'classReferenced', 'argVariables'], 'Compiler'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_argVariables", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2044,7 +2181,7 @@ source: "argVariables\x0a\x09^argVariables copy", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["copy"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_checkClass_for_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2060,7 +2197,7 @@ source: "checkClass: aClassName for: receiver\x0a        stream nextPutAll: '((( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["nextPutAll:", ","], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_compileNode_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2078,7 +2215,7 @@ source: "compileNode: aNode\x0a\x09stream := '' writeStream.\x0a\x09self visit: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["writeStream", "visit:", "contents"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_initialize", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2087,7 +2224,7 @@ selector: "initialize", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 category: 'initialization', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send(self, "_initialize", [], smalltalk.Compiler.superclass || nil); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send(self, "_initialize", [], smalltalk.FunCodeGenerator.superclass || nil); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (self['@stream']=smalltalk.send("", "_writeStream", [])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (self['@unknownVariables']=[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (self['@tempVariables']=[]); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2100,7 +2237,7 @@ source: "initialize\x0a\x09super initialize.\x0a\x09stream := '' writeStream. \x 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["initialize", "writeStream"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_inline_receiver_argumentNodes_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2130,7 +2267,7 @@ source: "inline: aSelector receiver: receiver argumentNodes: aCollection\x0a 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["ifTrue:", "=", "isBlockNode", "first", "checkClass:for:", "nextPutAll:", "visit:", "and:", "second"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_inlineLiteral_receiverNode_argumentNodes_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2164,7 +2301,7 @@ source: "inlineLiteral: aSelector receiverNode: anObject argumentNodes: aCollect 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["ifTrue:", "=", "and:", "isBlockNode", "first", "nextPutAll:", "visit:", "isNode:ofClass:", "second"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: ["Number"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_isNode_ofClass_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2180,7 +2317,7 @@ source: "isNode: aNode ofClass: aClass\x0a\x09^aNode isValueNode and: [\x0a 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["and:", "isValueNode", "or:", "=", "class", "value", "currentClass"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_knownVariables", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2196,7 +2333,7 @@ source: "knownVariables\x0a\x09^self pseudoVariables \x0a\x09\x09addAll: self te 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["addAll:", "tempVariables", "argVariables", "yourself", "pseudoVariables"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_performOptimizations", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2212,7 +2349,7 @@ source: "performOptimizations\x0a\x09^self class performOptimizations", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["performOptimizations", "class"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_send_to_arguments_superSend_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2229,7 +2366,7 @@ source: "send: aSelector to: aReceiver arguments: aCollection superSend: aBoolea 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["streamContents:", "nextPutAll:", ",", "asSelector", "do:separatedBy:", "visit:", "ifTrue:", "classNameFor:", "currentClass"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: ["String"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_tempVariables", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2245,7 +2382,7 @@ source: "tempVariables\x0a\x09^tempVariables copy", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["copy"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_unknownVariables", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2261,7 +2398,7 @@ source: "unknownVariables\x0a\x09^unknownVariables copy", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["copy"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_visit_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2277,7 +2414,7 @@ source: "visit: aNode\x0a\x09aNode accept: self", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["accept:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_visitAssignmentNode_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2297,7 +2434,7 @@ source: "visitAssignmentNode: aNode\x0a\x09stream nextPutAll: '('.\x0a\x09self v 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["nextPutAll:", "visit:", "left", "right"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_visitBlockNode_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2317,7 +2454,7 @@ source: "visitBlockNode: aNode\x0a\x09stream nextPutAll: '(function('.\x0a\x09aN 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["nextPutAll:", "do:separatedBy:", "parameters", "add:", "do:", "nodes", "visit:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_visitBlockSequenceNode_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2338,7 +2475,7 @@ source: "visitBlockSequenceNode: aNode\x0a\x09| index |\x0a\x09nestedBlocks := n 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["+", "ifTrue:ifFalse:", "isEmpty", "nodes", "nextPutAll:", "do:", "temps", "safeVariableNameFor:", "add:", ",", "lf", "ifTrue:", "=", "size", "visit:", "-"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_visitCascadeNode_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2361,7 +2498,7 @@ source: "visitCascadeNode: aNode\x0a\x09| index |\x0a\x09index := 0.\x0a\x09(tem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["ifFalse:", "includes:", "add:", "nextPutAll:", "do:", "nodes", "+", "ifTrue:", "=", "size", "receiver:", "value:", "new", "visit:", "receiver"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: ["VariableNode"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_visitClassReferenceNode_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2378,7 +2515,7 @@ source: "visitClassReferenceNode: aNode\x0a\x09(referencedClasses includes: aNod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["ifFalse:", "includes:", "value", "add:", "nextPutAll:", ","], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_visitDynamicArrayNode_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2396,7 +2533,7 @@ source: "visitDynamicArrayNode: aNode\x0a\x09stream nextPutAll: '['.\x0a\x09aNod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["nextPutAll:", "do:separatedBy:", "nodes", "visit:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_visitDynamicDictionaryNode_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2414,7 +2551,7 @@ source: "visitDynamicDictionaryNode: aNode\x0a\x09stream nextPutAll: 'smalltalk. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["nextPutAll:", "do:separatedBy:", "nodes", "visit:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_visitFailure_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2430,7 +2567,7 @@ source: "visitFailure: aFailure\x0a\x09self error: aFailure asString", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["error:", "asString"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_visitJSStatementNode_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2446,7 +2583,7 @@ source: "visitJSStatementNode: aNode\x0a\x09stream nextPutAll: aNode source", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["nextPutAll:", "source"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_visitMethodNode_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2489,7 +2626,7 @@ source: "visitMethodNode: aNode\x0a\x09| str currentSelector | \x0a\x09currentSe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["asSelector", "selector", "nextPutAll:", "lf", ",", "asJavascript", "source", "do:separatedBy:", "arguments", "add:", "writeStream", "do:", "nodes", "visit:", "ifTrue:", "contents", "printString"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: ["String"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_visitReturnNode_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2508,7 +2645,7 @@ source: "visitReturnNode: aNode\x0a\x09nestedBlocks > 0 ifTrue: [\x0a\x09    ear 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["ifTrue:", ">", "ifTrue:ifFalse:", "nextPutAll:", "do:", "nodes", "visit:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_visitSendNode_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2535,7 +2672,7 @@ source: "visitSendNode: aNode\x0a        | str receiver superSend inlined |\x0a 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["ifFalse:", "includes:", "selector", "add:", "writeStream", "visit:", "receiver", "=", "contents", "ifTrue:ifFalse:", "performOptimizations", "inlineLiteral:receiverNode:argumentNodes:", "arguments", "inline:receiver:argumentNodes:", "nextPutAll:", ",", "send:to:arguments:superSend:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_visitSequenceNode_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2553,7 +2690,7 @@ source: "visitSequenceNode: aNode\x0a\x09aNode temps do: [:each || temp |\x0a 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["do:", "temps", "safeVariableNameFor:", "add:", "nextPutAll:", ",", "lf", "do:separatedBy:", "nodes", "visit:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_visitValueNode_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2569,7 +2706,7 @@ source: "visitValueNode: aNode\x0a\x09stream nextPutAll: aNode value asJavascrip 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["nextPutAll:", "asJavascript", "value"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_visitVariableNode_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2586,10 +2723,10 @@ source: "visitVariableNode: aNode\x0a\x09| varName |\x0a\x09(self currentClass a 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["ifTrue:ifFalse:", "includes:", "allInstanceVariableNames", "currentClass", "value", "nextPutAll:", ",", "safeVariableNameFor:", "ifFalse:ifTrue:", "knownVariables", "add:", "assigned", "="], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler.klass.iVarNames = ['performOptimizations']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator.klass.iVarNames = ['performOptimizations']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_performOptimizations", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2604,7 +2741,7 @@ source: "performOptimizations\x0a\x09^performOptimizations ifNil: [true]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["ifNil:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler.klass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator.klass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_performOptimizations_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2620,6 +2757,6 @@ source: "performOptimizations: aBoolean\x0a\x09performOptimizations := aBoolean" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.Compiler.klass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.FunCodeGenerator.klass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |