|  | @@ -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);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 |