| 
					
				 | 
			
			
				@@ -198,12 +198,13 @@ smalltalk.AIContext); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addClass('ASTInterpreter', smalltalk.NodeVisitor, ['currentNode', 'context', 'shouldReturn', 'currentValue'], 'Compiler-Interpreter'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addClass('ASTInterpreter', smalltalk.Object, ['currentNode', 'context', 'shouldReturn', 'result'], 'Compiler-Interpreter'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.ASTInterpreter.comment="ASTIntepreter is like a `NodeVisitor`, interpreting nodes one after each other.\x0aIt is built using Continuation Passing Style for stepping purposes." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_assign_to_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 selector: "assign:to:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'interpreting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'private', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 fn: function (aNode,anObject){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.withContext(function($ctx1) { 
var $2,$1; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -263,35 +264,18 @@ referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.ASTInterpreter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_continue_value_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'interpreting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (anObject){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "continue:value:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'private', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aBlock,anObject){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.withContext(function($ctx1) { 
self["@currentValue"]=anObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self}, function($ctx1) {$ctx1.fill(self,"continue:",{anObject:anObject}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["anObject"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "continue: anObject\x0a\x09currentValue := anObject", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.ASTInterpreter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_currentValue", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "currentValue", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'accessing', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.withContext(function($ctx1) { 
var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$1=self["@currentValue"]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}, function($ctx1) {$ctx1.fill(self,"currentValue",{}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "currentValue\x0a\x09^ currentValue", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
self["@result"]=anObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+_st(aBlock)._value_(anObject); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self}, function($ctx1) {$ctx1.fill(self,"continue:value:",{aBlock:aBlock,anObject:anObject}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aBlock", "anObject"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "continue: aBlock value: anObject\x0a\x09result := anObject.\x0a    aBlock value: anObject", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["value:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.ASTInterpreter); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -300,7 +284,7 @@ smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_eval_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 selector: "eval:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'interpreting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'private', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 fn: function (aString){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var source,function_; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -336,7 +320,7 @@ selector: "initialize", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 category: 'initialization', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.withContext(function($ctx1) { 
smalltalk.NodeVisitor.fn.prototype._initialize.apply(_st(self), []); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
smalltalk.Object.fn.prototype._initialize.apply(_st(self), []); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 self["@shouldReturn"]=false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 args: [], 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -355,12 +339,12 @@ fn: function (aNode){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.withContext(function($ctx1) { 
self["@shouldReturn"]=false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 _st(self)._interpret_continue_(aNode,(function(value){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.withContext(function($ctx2) {
self["@currentValue"]=value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self["@currentValue"]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx2) {
self["@result"]=value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self["@result"]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1)})})); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return self}, function($ctx1) {$ctx1.fill(self,"interpret:",{aNode:aNode}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 args: ["aNode"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "interpret: aNode\x0a\x09shouldReturn := false.\x0a    self interpret: aNode continue: [ :value |\x0a    \x09currentValue := value ]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpret: aNode\x0a\x09shouldReturn := false.\x0a    self interpret: aNode continue: [ :value |\x0a    \x09result := value ]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["interpret:continue:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -381,16 +365,18 @@ return $2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $3=_st(aNode)._isNode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 if(smalltalk.assert($3)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-_st(self)._visit_(aNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+self["@currentNode"]=aNode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+self["@currentNode"]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+_st(self)._interpretNode_continue_(aNode,(function(value){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx2) {
return _st(self)._continue_value_(aBlock,value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1)})})); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-self["@currentValue"]=aNode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-self["@currentValue"]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+_st(self)._continue_value_(aBlock,aNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-_st(aBlock)._value_(_st(self)._currentValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return self}, function($ctx1) {$ctx1.fill(self,"interpret:continue:",{aNode:aNode,aBlock:aBlock}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 args: ["aNode", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "interpret: aNode continue: aBlock\x0a\x09shouldReturn ifTrue: [ ^ self ].\x0a\x0a\x09aNode isNode \x0a    \x09ifTrue: [ self visit: aNode ]\x0a        ifFalse: [ currentValue := aNode ].\x0a\x09aBlock value: self currentValue", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["ifTrue:", "ifTrue:ifFalse:", "visit:", "isNode", "value:", "currentValue"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpret: aNode continue: aBlock\x0a\x09shouldReturn ifTrue: [ ^ self ].\x0a\x0a\x09aNode isNode \x0a    \x09ifTrue: [ \x09\x0a        \x09currentNode := aNode.\x0a            self interpretNode: aNode continue: [ :value |\x0a  \x09\x09\x09\x09self continue: aBlock value: value] ]\x0a        ifFalse: [ self continue: aBlock value: aNode ]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["ifTrue:", "ifTrue:ifFalse:", "interpretNode:continue:", "continue:value:", "isNode"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.ASTInterpreter); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -399,7 +385,7 @@ smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_interpretAll_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 selector: "interpretAll:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'interpreting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'private', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 fn: function (aCollection,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.withContext(function($ctx1) { 
_st(self)._interpretAll_continue_result_(aCollection,aBlock,_st((smalltalk.OrderedCollection || OrderedCollection))._new()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -415,7 +401,7 @@ smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_interpretAll_continue_result_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 selector: "interpretAll:continue:result:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'interpreting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'private', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 fn: function (nodes,aBlock,aCollection){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.withContext(function($ctx1) { 
var $1; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -436,74 +422,67 @@ referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.ASTInterpreter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_messageFromSendNode_do_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpretAssignmentNode_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "messageFromSendNode:do:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpretAssignmentNode:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 category: 'interpreting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aSendNode,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.withContext(function($ctx1) { 
var $1,$2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-_st(self)._interpretAll_continue_(_st(aSendNode)._arguments(),(function(args){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.withContext(function($ctx2) {
$1=_st((smalltalk.Message || Message))._new(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-_st($1)._selector_(_st(aSendNode)._selector()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-_st($1)._arguments_(args); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$2=_st($1)._yourself(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return _st(aBlock)._value_($2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}, function($ctx2) {$ctx2.fillBlock({args:args},$ctx1)})})); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self}, function($ctx1) {$ctx1.fill(self,"messageFromSendNode:do:",{aSendNode:aSendNode,aBlock:aBlock}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aSendNode", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "messageFromSendNode: aSendNode do: aBlock\x0a\x09self interpretAll: aSendNode arguments continue: [ :args |\x0a    \x09aBlock value: (Message new\x0a    \x09\x09selector: aSendNode selector;\x0a        \x09arguments: args;\x0a        \x09yourself) ]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["interpretAll:continue:", "arguments", "value:", "selector:", "selector", "new", "arguments:", "yourself"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: ["Message"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.ASTInterpreter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_visitAssignmentNode_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "visitAssignmentNode:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'visiting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aNode){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aNode,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.withContext(function($ctx1) { 
_st(self)._interpret_continue_(_st(aNode)._right(),(function(value){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.withContext(function($ctx2) {
return _st(self)._continue_(_st(self)._assign_to_(_st(aNode)._left(),value)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx2) {
return _st(self)._continue_value_(aBlock,_st(self)._assign_to_(_st(aNode)._left(),value)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1)})})); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self}, function($ctx1) {$ctx1.fill(self,"visitAssignmentNode:",{aNode:aNode}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aNode"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "visitAssignmentNode: aNode\x0a\x09self interpret: aNode right continue: [ :value |\x0a    \x09self continue: (self assign: aNode left to: value) ]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["interpret:continue:", "right", "continue:", "assign:to:", "left"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self}, function($ctx1) {$ctx1.fill(self,"interpretAssignmentNode:continue:",{aNode:aNode,aBlock:aBlock}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aNode", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpretAssignmentNode: aNode continue: aBlock\x0a\x09self interpret: aNode right continue: [ :value |\x0a    \x09self \x0a        \x09continue: aBlock\x0a            value: (self assign: aNode left to: value) ]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["interpret:continue:", "right", "continue:value:", "assign:to:", "left"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.ASTInterpreter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_visitBlockNode_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpretBlockNode_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "visitBlockNode:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'visiting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aNode){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpretBlockNode:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'interpreting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aNode,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.withContext(function($ctx1) { 
var $1,$2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-_st(self)._continue_((function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+_st(self)._continue_value_(aBlock,(function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.withContext(function($ctx2) {
$1=self; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 _st($1)._interpret_(_st(_st(aNode)._nodes())._first()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$2=_st($1)._currentValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$2=_st($1)._result(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return $2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self}, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aNode"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "visitBlockNode: aNode\x0a\x09\x22TODO: Context should be set\x22\x0a    \x0a    self continue: [ self interpret: aNode nodes first; currentValue ]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["continue:", "interpret:", "first", "nodes", "currentValue"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self}, function($ctx1) {$ctx1.fill(self,"interpretBlockNode:continue:",{aNode:aNode,aBlock:aBlock}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aNode", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpretBlockNode: aNode continue: aBlock\x0a\x09\x22TODO: Context should be set\x22\x0a    \x0a    self \x0a    \x09continue: aBlock \x0a        value: [ self interpret: aNode nodes first; result ]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["continue:value:", "interpret:", "first", "nodes", "result"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.ASTInterpreter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_visitCascadeNode_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpretBlockSequenceNode_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "visitCascadeNode:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'visiting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aNode){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpretBlockSequenceNode:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'interpreting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aNode,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
_st(self)._interpretSequenceNode_continue_(aNode,aBlock); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self}, function($ctx1) {$ctx1.fill(self,"interpretBlockSequenceNode:continue:",{aNode:aNode,aBlock:aBlock}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aNode", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpretBlockSequenceNode: aNode continue: aBlock\x0a\x09self interpretSequenceNode: aNode continue: aBlock", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["interpretSequenceNode:continue:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.ASTInterpreter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpretCascadeNode_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpretCascadeNode:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'interpreting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aNode,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.withContext(function($ctx1) { 
_st(self)._interpret_continue_(_st(aNode)._receiver(),(function(receiver){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.withContext(function($ctx2) {
_st(_st(aNode)._nodes())._do_((function(each){ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -511,58 +490,58 @@ return smalltalk.withContext(function($ctx3) {
return _st(each)._receiver_(recei 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx1)})})); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return _st(self)._interpretAll_continue_(_st(_st(aNode)._nodes())._allButLast(),(function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.withContext(function($ctx3) {
return _st(self)._interpret_continue_(_st(_st(aNode)._nodes())._last(),(function(val){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.withContext(function($ctx4) {
return _st(self)._continue_(val); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx4) {
return _st(self)._continue_value_(aBlock,val); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }, function($ctx4) {$ctx4.fillBlock({val:val},$ctx1)})})); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})})); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }, function($ctx2) {$ctx2.fillBlock({receiver:receiver},$ctx1)})})); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self}, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:",{aNode:aNode}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aNode"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "visitCascadeNode: aNode\x0a\x09\x22TODO: Handle super sends\x22\x0a\x09\x0a    self interpret: aNode receiver continue: [ :receiver |\x0a\x09\x09\x22Only interpret the receiver once\x22\x0a        aNode nodes do: [ :each | each receiver: receiver ].\x0a  \x0a    \x09self \x0a        \x09interpretAll: aNode nodes allButLast\x0a    \x09\x09continue: [\x0a              \x09self \x0a                \x09interpret: aNode nodes last\x0a                \x09continue: [ :val | self continue: val ] ] ]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["interpret:continue:", "receiver", "do:", "receiver:", "nodes", "interpretAll:continue:", "allButLast", "last", "continue:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self}, function($ctx1) {$ctx1.fill(self,"interpretCascadeNode:continue:",{aNode:aNode,aBlock:aBlock}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aNode", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpretCascadeNode: aNode continue: aBlock\x0a\x09\x22TODO: Handle super sends\x22\x0a\x09\x0a    self interpret: aNode receiver continue: [ :receiver |\x0a\x09\x09\x22Only interpret the receiver once\x22\x0a        aNode nodes do: [ :each | each receiver: receiver ].\x0a  \x0a    \x09self \x0a        \x09interpretAll: aNode nodes allButLast\x0a    \x09\x09continue: [\x0a              \x09self \x0a                \x09interpret: aNode nodes last\x0a                \x09continue: [ :val | self continue: aBlock value: val ] ] ]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["interpret:continue:", "receiver", "do:", "receiver:", "nodes", "interpretAll:continue:", "allButLast", "last", "continue:value:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.ASTInterpreter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_visitClassReferenceNode_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpretClassReferenceNode_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "visitClassReferenceNode:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'visiting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aNode){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpretClassReferenceNode:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'interpreting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aNode,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.withContext(function($ctx1) { 
_st(self)._continue_(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._at_(_st(aNode)._value())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self}, function($ctx1) {$ctx1.fill(self,"visitClassReferenceNode:",{aNode:aNode}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aNode"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "visitClassReferenceNode: aNode\x0a\x09self continue: (Smalltalk current at: aNode value)", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["continue:", "at:", "value", "current"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
_st(self)._continue_value_(aBlock,_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._at_(_st(aNode)._value())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self}, function($ctx1) {$ctx1.fill(self,"interpretClassReferenceNode:continue:",{aNode:aNode,aBlock:aBlock}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aNode", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpretClassReferenceNode: aNode continue: aBlock\x0a\x09self continue: aBlock value: (Smalltalk current at: aNode value)", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["continue:value:", "at:", "value", "current"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: ["Smalltalk"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.ASTInterpreter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_visitDynamicArrayNode_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpretDynamicArrayNode_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "visitDynamicArrayNode:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'visiting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aNode){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpretDynamicArrayNode:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'interpreting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aNode,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.withContext(function($ctx1) { 
_st(self)._interpretAll_continue_(_st(aNode)._nodes(),(function(array){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.withContext(function($ctx2) {
return _st(self)._continue_(array); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx2) {
return _st(self)._continue_value_(aBlock,array); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }, function($ctx2) {$ctx2.fillBlock({array:array},$ctx1)})})); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self}, function($ctx1) {$ctx1.fill(self,"visitDynamicArrayNode:",{aNode:aNode}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aNode"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "visitDynamicArrayNode: aNode\x0a\x09self interpretAll: aNode nodes continue: [ :array |\x0a    \x09self continue: array ]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["interpretAll:continue:", "nodes", "continue:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self}, function($ctx1) {$ctx1.fill(self,"interpretDynamicArrayNode:continue:",{aNode:aNode,aBlock:aBlock}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aNode", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpretDynamicArrayNode: aNode continue: aBlock\x0a\x09self interpretAll: aNode nodes continue: [ :array |\x0a    \x09self \x0a        \x09continue: aBlock\x0a\x09\x09\x09value: array ]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["interpretAll:continue:", "nodes", "continue:value:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.ASTInterpreter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_visitDynamicDictionaryNode_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpretDynamicDictionaryNode_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "visitDynamicDictionaryNode:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'visiting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aNode){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpretDynamicDictionaryNode:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'interpreting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aNode,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.withContext(function($ctx1) { 
_st(self)._interpretAll_continue_(_st(aNode)._nodes(),(function(array){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var hashedCollection; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -571,128 +550,204 @@ hashedCollection; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 _st(array)._do_((function(each){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.withContext(function($ctx3) {
return _st(hashedCollection)._add_(each); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx1)})})); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return _st(self)._continue_(hashedCollection); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return _st(self)._continue_value_(aBlock,hashedCollection); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }, function($ctx2) {$ctx2.fillBlock({array:array,hashedCollection:hashedCollection},$ctx1)})})); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self}, function($ctx1) {$ctx1.fill(self,"visitDynamicDictionaryNode:",{aNode:aNode}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aNode"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "visitDynamicDictionaryNode: aNode\x0a    self interpretAll: aNode nodes continue: [ :array | | hashedCollection |\x0a    \x09hashedCollection := HashedCollection new.\x0a        array do: [ :each | hashedCollection add: each ].\x0a        self continue: hashedCollection ]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["interpretAll:continue:", "nodes", "new", "do:", "add:", "continue:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self}, function($ctx1) {$ctx1.fill(self,"interpretDynamicDictionaryNode:continue:",{aNode:aNode,aBlock:aBlock}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aNode", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpretDynamicDictionaryNode: aNode continue: aBlock\x0a    self interpretAll: aNode nodes continue: [ :array | | hashedCollection |\x0a    \x09hashedCollection := HashedCollection new.\x0a        array do: [ :each | hashedCollection add: each ].\x0a        self \x09\x0a        \x09continue: aBlock\x0a            value: hashedCollection ]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["interpretAll:continue:", "nodes", "new", "do:", "add:", "continue:value:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: ["HashedCollection"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.ASTInterpreter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_visitJSStatementNode_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpretJSStatementNode_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "visitJSStatementNode:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'visiting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aNode){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpretJSStatementNode:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'interpreting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aNode,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.withContext(function($ctx1) { 
self["@shouldReturn"]=true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-_st(self)._continue_(_st(self)._eval_(_st(aNode)._source())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self}, function($ctx1) {$ctx1.fill(self,"visitJSStatementNode:",{aNode:aNode}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aNode"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "visitJSStatementNode: aNode\x0a\x09shouldReturn := true.\x0a\x09self continue: (self eval: aNode source)", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["continue:", "eval:", "source"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+_st(self)._continue_value_(aBlock,_st(self)._eval_(_st(aNode)._source())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self}, function($ctx1) {$ctx1.fill(self,"interpretJSStatementNode:continue:",{aNode:aNode,aBlock:aBlock}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aNode", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpretJSStatementNode: aNode continue: aBlock\x0a\x09shouldReturn := true.\x0a\x09self continue: aBlock value: (self eval: aNode source)", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["continue:value:", "eval:", "source"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.ASTInterpreter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_visitReturnNode_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpretMethodNode_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "visitReturnNode:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'visiting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aNode){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpretMethodNode:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'interpreting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aNode,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
_st(self)._interpretAll_continue_(_st(aNode)._nodes(),(function(array){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx2) {
return _st(self)._continue_value_(aBlock,_st(array)._first()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, function($ctx2) {$ctx2.fillBlock({array:array},$ctx1)})})); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self}, function($ctx1) {$ctx1.fill(self,"interpretMethodNode:continue:",{aNode:aNode,aBlock:aBlock}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aNode", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpretMethodNode: aNode continue: aBlock\x0a\x09self interpretAll: aNode nodes continue: [ :array |\x0a    \x09self continue: aBlock value: array first ]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["interpretAll:continue:", "nodes", "continue:value:", "first"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.ASTInterpreter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpretNode_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpretNode:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'interpreting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aNode,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
_st(aNode)._interpreter_continue_(self,aBlock); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self}, function($ctx1) {$ctx1.fill(self,"interpretNode:continue:",{aNode:aNode,aBlock:aBlock}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aNode", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpretNode: aNode continue: aBlock\x0a    aNode interpreter: self continue: aBlock", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["interpreter:continue:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.ASTInterpreter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpretReturnNode_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpretReturnNode:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'interpreting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aNode,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.withContext(function($ctx1) { 
_st(self)._interpret_continue_(_st(_st(aNode)._nodes())._first(),(function(value){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.withContext(function($ctx2) {
self["@shouldReturn"]=true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 self["@shouldReturn"]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return _st(self)._continue_(value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return _st(self)._continue_value_(aBlock,value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1)})})); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self}, function($ctx1) {$ctx1.fill(self,"visitReturnNode:",{aNode:aNode}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aNode"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "visitReturnNode: aNode\x0a    self interpret: aNode nodes first continue: [ :value |\x0a    \x09shouldReturn := true.\x0a\x09\x09self continue: value ]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["interpret:continue:", "first", "nodes", "continue:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self}, function($ctx1) {$ctx1.fill(self,"interpretReturnNode:continue:",{aNode:aNode,aBlock:aBlock}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aNode", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpretReturnNode: aNode continue: aBlock\x0a    self interpret: aNode nodes first continue: [ :value |\x0a    \x09shouldReturn := true.\x0a\x09\x09self continue: aBlock value: value ]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["interpret:continue:", "first", "nodes", "continue:value:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.ASTInterpreter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_visitSendNode_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpretSendNode_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "visitSendNode:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'visiting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aNode){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpretSendNode:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'interpreting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aNode,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.withContext(function($ctx1) { 
_st(self)._interpret_continue_(_st(aNode)._receiver(),(function(receiver){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.withContext(function($ctx2) {
return _st(self)._messageFromSendNode_do_(aNode,(function(message){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.withContext(function($ctx3) {
_st(_st(self)._context())._pc_(_st(_st(_st(self)._context())._pc()).__plus((1))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return _st(self)._continue_(_st(message)._sendTo_(receiver)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return _st(self)._continue_value_(aBlock,_st(message)._sendTo_(receiver)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }, function($ctx3) {$ctx3.fillBlock({message:message},$ctx1)})})); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }, function($ctx2) {$ctx2.fillBlock({receiver:receiver},$ctx1)})})); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self}, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aNode"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "visitSendNode: aNode\x0a\x09\x22TODO: Handle super sends\x22\x0a    \x0a    self interpret: aNode receiver continue: [ :receiver |\x0a    \x09self messageFromSendNode: aNode do: [ :message |\x0a        \x09self context pc: self context pc + 1.\x0a        \x09self continue: (message sendTo: receiver) ] ]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["interpret:continue:", "receiver", "messageFromSendNode:do:", "pc:", "+", "pc", "context", "continue:", "sendTo:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self}, function($ctx1) {$ctx1.fill(self,"interpretSendNode:continue:",{aNode:aNode,aBlock:aBlock}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aNode", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpretSendNode: aNode continue: aBlock\x0a\x09\x22TODO: Handle super sends\x22\x0a    \x0a    self interpret: aNode receiver continue: [ :receiver |\x0a    \x09self messageFromSendNode: aNode do: [ :message |\x0a        \x09self context pc: self context pc + 1.\x0a        \x09self \x0a            \x09continue: aBlock \x0a                value: (message sendTo: receiver) ] ]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["interpret:continue:", "receiver", "messageFromSendNode:do:", "pc:", "+", "pc", "context", "continue:value:", "sendTo:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.ASTInterpreter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_visitSequenceNode_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpretSequenceNode_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "visitSequenceNode:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'visiting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aNode){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpretSequenceNode:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'interpreting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aNode,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.withContext(function($ctx1) { 
_st(self)._interpretAll_continue_(_st(aNode)._nodes(),(function(array){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.withContext(function($ctx2) {
return _st(self)._continue_(_st(array)._last()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx2) {
return _st(self)._continue_value_(aBlock,_st(array)._last()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }, function($ctx2) {$ctx2.fillBlock({array:array},$ctx1)})})); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self}, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:",{aNode:aNode}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aNode"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "visitSequenceNode: aNode\x0a\x09self interpretAll: aNode nodes continue: [ :array |\x0a    \x09self continue: array last ]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["interpretAll:continue:", "nodes", "continue:", "last"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self}, function($ctx1) {$ctx1.fill(self,"interpretSequenceNode:continue:",{aNode:aNode,aBlock:aBlock}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aNode", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpretSequenceNode: aNode continue: aBlock\x0a\x09self interpretAll: aNode nodes continue: [ :array |\x0a    \x09self continue: aBlock value: array last ]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["interpretAll:continue:", "nodes", "continue:value:", "last"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.ASTInterpreter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_visitValueNode_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpretValueNode_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "visitValueNode:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'visiting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aNode){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpretValueNode:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'interpreting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aNode,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.withContext(function($ctx1) { 
_st(self)._continue_(_st(aNode)._value()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self}, function($ctx1) {$ctx1.fill(self,"visitValueNode:",{aNode:aNode}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aNode"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "visitValueNode: aNode\x0a\x09self continue: aNode value", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["continue:", "value"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
_st(self)._continue_value_(aBlock,_st(aNode)._value()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self}, function($ctx1) {$ctx1.fill(self,"interpretValueNode:continue:",{aNode:aNode,aBlock:aBlock}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aNode", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpretValueNode: aNode continue: aBlock\x0a\x09self continue: aBlock value: aNode value", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["continue:value:", "value"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.ASTInterpreter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_visitVariableNode_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpretVariableNode_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "visitVariableNode:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'visiting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aNode){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpretVariableNode:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'interpreting', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aNode,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.withContext(function($ctx1) { 
var $1,$3,$2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$4,$3; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $1=self; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$3=_st(_st(aNode)._binding())._isInstanceVar(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-if(smalltalk.assert($3)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$2=_st(_st(_st(self)._context())._receiver())._instVarAt_(_st(aNode)._value()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$2=aBlock; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$4=_st(_st(aNode)._binding())._isInstanceVar(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if(smalltalk.assert($4)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$3=_st(_st(_st(self)._context())._receiver())._instVarAt_(_st(aNode)._value()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$2=_st(_st(self)._context())._localAt_(_st(aNode)._value()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$3=_st(_st(self)._context())._localAt_(_st(aNode)._value()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-_st($1)._continue_($2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self}, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aNode"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "visitVariableNode: aNode\x0a    self continue: (aNode binding isInstanceVar\x0a\x09\x09ifTrue: [ self context receiver instVarAt: aNode value ]\x0a\x09\x09ifFalse: [ self context localAt: aNode value ])", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["continue:", "ifTrue:ifFalse:", "instVarAt:", "value", "receiver", "context", "localAt:", "isInstanceVar", "binding"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+_st($1)._continue_value_($2,$3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self}, function($ctx1) {$ctx1.fill(self,"interpretVariableNode:continue:",{aNode:aNode,aBlock:aBlock}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aNode", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpretVariableNode: aNode continue: aBlock\x0a    self \x0a    \x09continue: aBlock\x0a        value: (aNode binding isInstanceVar\x0a\x09\x09\x09ifTrue: [ self context receiver instVarAt: aNode value ]\x0a\x09\x09\x09ifFalse: [ self context localAt: aNode value ])", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["continue:value:", "ifTrue:ifFalse:", "instVarAt:", "value", "receiver", "context", "localAt:", "isInstanceVar", "binding"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.ASTInterpreter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_messageFromSendNode_do_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "messageFromSendNode:do:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'private', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aSendNode,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
var $1,$2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+_st(self)._interpretAll_continue_(_st(aSendNode)._arguments(),(function(args){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx2) {
$1=_st((smalltalk.Message || Message))._new(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+_st($1)._selector_(_st(aSendNode)._selector()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+_st($1)._arguments_(args); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$2=_st($1)._yourself(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return _st(aBlock)._value_($2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, function($ctx2) {$ctx2.fillBlock({args:args},$ctx1)})})); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self}, function($ctx1) {$ctx1.fill(self,"messageFromSendNode:do:",{aSendNode:aSendNode,aBlock:aBlock}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aSendNode", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "messageFromSendNode: aSendNode do: aBlock\x0a\x09self interpretAll: aSendNode arguments continue: [ :args |\x0a    \x09aBlock value: (Message new\x0a    \x09\x09selector: aSendNode selector;\x0a        \x09arguments: args;\x0a        \x09yourself) ]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["interpretAll:continue:", "arguments", "value:", "selector:", "selector", "new", "arguments:", "yourself"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: ["Message"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.ASTInterpreter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_result", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "result", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'accessing', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=self["@result"]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, function($ctx1) {$ctx1.fill(self,"result",{}, smalltalk.ASTInterpreter)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "result\x0a\x09^ result", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.ASTInterpreter); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -754,3 +809,273 @@ smalltalk.ASTDebugger); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpreter_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpreter:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: '*Compiler-Interpreter', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (anInterpreter,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=_st(anInterpreter)._interpretNode_continue_(self,aBlock); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock}, smalltalk.Node)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["anInterpreter", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpreter: anInterpreter continue: aBlock\x0a\x09^ anInterpreter interpretNode: self continue: aBlock", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["interpretNode:continue:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.Node); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpreter_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpreter:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: '*Compiler-Interpreter', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (anInterpreter,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=_st(anInterpreter)._interpretAssignmentNode_continue_(self,aBlock); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock}, smalltalk.AssignmentNode)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["anInterpreter", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpreter: anInterpreter continue: aBlock\x0a\x09^ anInterpreter interpretAssignmentNode: self continue: aBlock", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["interpretAssignmentNode:continue:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.AssignmentNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpreter_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpreter:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: '*Compiler-Interpreter', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (anInterpreter,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=_st(anInterpreter)._interpretBlockNode_continue_(self,aBlock); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock}, smalltalk.BlockNode)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["anInterpreter", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpreter: anInterpreter continue: aBlock\x0a\x09^ anInterpreter interpretBlockNode: self continue: aBlock", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["interpretBlockNode:continue:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.BlockNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpreter_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpreter:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: '*Compiler-Interpreter', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (anInterpreter,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=_st(anInterpreter)._interpretCascadeNode_continue_(self,aBlock); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock}, smalltalk.CascadeNode)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["anInterpreter", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpreter: anInterpreter continue: aBlock\x0a\x09^ anInterpreter interpretCascadeNode: self continue: aBlock", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["interpretCascadeNode:continue:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.CascadeNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpreter_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpreter:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: '*Compiler-Interpreter', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (anInterpreter,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=_st(anInterpreter)._interpretDynamicArrayNode_continue_(self,aBlock); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock}, smalltalk.DynamicArrayNode)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["anInterpreter", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpreter: anInterpreter continue: aBlock\x0a\x09^ anInterpreter interpretDynamicArrayNode: self continue: aBlock", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["interpretDynamicArrayNode:continue:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.DynamicArrayNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpreter_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpreter:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: '*Compiler-Interpreter', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (anInterpreter,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=_st(anInterpreter)._interpretDynamicDictionaryNode_continue_(self,aBlock); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock}, smalltalk.DynamicDictionaryNode)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["anInterpreter", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpreter: anInterpreter continue: aBlock\x0a\x09^ anInterpreter interpretDynamicDictionaryNode: self continue: aBlock", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["interpretDynamicDictionaryNode:continue:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.DynamicDictionaryNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpreter_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpreter:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: '*Compiler-Interpreter', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (anInterpreter,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=_st(anInterpreter)._interpretJSStatementNode_continue_(self,aBlock); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock}, smalltalk.JSStatementNode)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["anInterpreter", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpreter: anInterpreter continue: aBlock\x0a\x09^ anInterpreter interpretJSStatementNode: self continue: aBlock", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["interpretJSStatementNode:continue:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.JSStatementNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpreter_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpreter:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: '*Compiler-Interpreter', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (anInterpreter,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=_st(anInterpreter)._interpretMethodNode_continue_(self,aBlock); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock}, smalltalk.MethodNode)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["anInterpreter", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpreter: anInterpreter continue: aBlock\x0a\x09^ anInterpreter interpretMethodNode: self continue: aBlock", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["interpretMethodNode:continue:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.MethodNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpreter_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpreter:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: '*Compiler-Interpreter', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (anInterpreter,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=_st(anInterpreter)._interpretReturnNode_continue_(self,aBlock); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock}, smalltalk.ReturnNode)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["anInterpreter", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpreter: anInterpreter continue: aBlock\x0a\x09^ anInterpreter interpretReturnNode: self continue: aBlock", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["interpretReturnNode:continue:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.ReturnNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpreter_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpreter:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: '*Compiler-Interpreter', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (anInterpreter,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=_st(anInterpreter)._interpretSendNode_continue_(self,aBlock); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock}, smalltalk.SendNode)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["anInterpreter", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpreter: anInterpreter continue: aBlock\x0a\x09^ anInterpreter interpretSendNode: self continue: aBlock", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["interpretSendNode:continue:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.SendNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpreter_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpreter:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: '*Compiler-Interpreter', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (anInterpreter,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=_st(anInterpreter)._interpretSequenceNode_continue_(self,aBlock); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock}, smalltalk.SequenceNode)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["anInterpreter", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpreter: anInterpreter continue: aBlock\x0a\x09^ anInterpreter interpretSequenceNode: self continue: aBlock", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["interpretSequenceNode:continue:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.SequenceNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpreter_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpreter:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: '*Compiler-Interpreter', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (anInterpreter,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=_st(anInterpreter)._interpretBlockSequenceNode_continue_(self,aBlock); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock}, smalltalk.BlockSequenceNode)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["anInterpreter", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpreter: anInterpreter continue: aBlock\x0a\x09^ anInterpreter interpretBlockSequenceNode: self continue: aBlock", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["interpretBlockSequenceNode:continue:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.BlockSequenceNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpreter_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpreter:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: '*Compiler-Interpreter', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (anInterpreter,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=_st(anInterpreter)._interpretValueNode_continue_(self,aBlock); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock}, smalltalk.ValueNode)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["anInterpreter", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpreter: anInterpreter continue: aBlock\x0a\x09^ anInterpreter interpretValueNode: self continue: aBlock", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["interpretValueNode:continue:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.ValueNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpreter_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpreter:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: '*Compiler-Interpreter', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (anInterpreter,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=_st(anInterpreter)._interpretVariableNode_continue_(self,aBlock); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock}, smalltalk.VariableNode)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["anInterpreter", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpreter: anInterpreter continue: aBlock\x0a\x09^ anInterpreter interpretVariableNode: self continue: aBlock", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["interpretVariableNode:continue:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.VariableNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_interpreter_continue_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "interpreter:continue:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: '*Compiler-Interpreter', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (anInterpreter,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.withContext(function($ctx1) { 
var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=_st(anInterpreter)._interpretClassReferenceNode_continue_(self,aBlock); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock}, smalltalk.ClassReferenceNode)})}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["anInterpreter", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "interpreter: anInterpreter continue: aBlock\x0a\x09^ anInterpreter interpretClassReferenceNode: self continue: aBlock", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["interpretClassReferenceNode:continue:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.ClassReferenceNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 |