[View] [Edit] [Lock] [References] [Attachments] [History] [Home] [Changes] [Search] [Help]
[E8] Activated Methods (javascript)
smalltalk.bind(smalltalk.APIBuilder,"register:",0
,function (aMethod){var $s8Ret$={name:"stReturn"};try{var self=this;(((nil.isNil_(self['@token']))).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return false;})();throw($s8Ret$)})();})() : nil);
(((nil.isNil_(self['@bound']))).mustBeBoolean()==true ? (function(){return self['@bound']=smalltalk.Array.$$new();})() : nil);
self['@bound'].add_(aMethod);
(function(){$s8Ret$.result=(function(){return true;})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"private",unescape("register%3A%20aMethod%0D%0A%09%22%20Private%20-%20Register%20aMethod%20as%20related%20to%20the%20receiver.%20%22%0D%0A%0D%0A%09token%20isNil%20ifTrue%3A%20%5B%20%5Efalse%20%5D.%0D%0A%09bound%20isNil%20ifTrue%3A%20%5B%20bound%20%3A%3D%20Array%20new%20%5D.%0D%0A%09bound%20add%3A%20aMethod.%0D%0A%09%5Etrue"));
smalltalk.bind(smalltalk.APIBuilder.$klass,"register:",0
,function (aMethod){var self=this;return (nil.isNil_(self['@default'])===false).and_((function(){return self['@default'].register_(aMethod);}));;return self;}
,"building",unescape("register%3A%20aMethod%0D%0A%09%22%20Register%20aMethod%20as%20related%20to%20current%20builder.%20%22%0D%0A%0D%0A%09%5Edefault%20notNil%20and%3A%20%5B%20default%20register%3A%20aMethod%20%5D"));
smalltalk.bind(smalltalk.Array,",","_comma"
,function (aCollection){var self=this;return self.concat(aCollection.asArray());;return self;}
,"copying",unescape("%2C%20aCollection%0D%0A%09%22%20Return%20a%20copy%20of%20the%20receiver%20with%20all%20contents%20of%20aCollection.%20%22%0D%0A%0D%0A%09%5Eself%20%23concat%3A%20aCollection%20asArray"));
smalltalk.bind(smalltalk.Array,"addLast:",0
,function (anObject){var self=this;self.push(anObject);
return anObject;;return self;}
,"adding",unescape("addLast%3A%20anObject%0D%0A%09%22%20Add%20anObject%20to%20the%20receiver.%20%22%0D%0A%0D%0A%09self%20%23push%3A%20anObject.%0D%0A%09%5EanObject"));
smalltalk.bind(smalltalk.Array,"add:",0
,function (anObject){var self=this;self.push(anObject);
return anObject;;return self;}
,"adding",unescape("add%3A%20anObject%0D%0A%09%22%20Add%20anObject%20to%20the%20receiver.%20%22%0D%0A%0D%0A%09self%20%23push%3A%20anObject.%0D%0A%09%5EanObject"));
smalltalk.bind(smalltalk.Array,"asArray",0
,function (){var self=this;return self;;return self;}
,"converting",unescape("asArray%0D%0A%09%22%20Return%20an%20array%20with%20the%20contents%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself"));
smalltalk.bind(smalltalk.Array,"at:",0
,function (anIndex){var self=this; var value = self[anIndex - 1];
if(value === undefined) { return self.objectNotFoundAt_(anIndex); }
return value;;return self;}
,"accessing",unescape("at%3A%20anIndex%0D%0A%09%22%20Return%20the%20contents%20of%20the%20receiver%20at%20anIndex.%20%22%0D%0A%0D%0A%7B%27%09var%20value%20%3D%20self%5BanIndex%20-%201%5D%3B%0D%0A%09if%28value%20%3D%3D%3D%20undefined%29%20%7B%20return%20self.objectNotFoundAt_%28anIndex%29%3B%20%7D%0D%0A%09return%20value%3B%27%7D"));
smalltalk.bind(smalltalk.Array,"at:ifAbsent:",0
,function (anIndex,aBlock){var self=this; var value = self[anIndex - 1];
if(value === undefined) { return aBlock(); }
return value;;return self;}
,"accessing",unescape("at%3A%20anIndex%20ifAbsent%3A%20aBlock%0D%0A%09%22%20Return%20the%20contents%20of%20the%20receiver%20at%20anIndex%20or%20the%20result%20of%20evaluating%20aBlock.%20%22%0D%0A%0D%0A%7B%27%09var%20value%20%3D%20self%5BanIndex%20-%201%5D%3B%0D%0A%09if%28value%20%3D%3D%3D%20undefined%29%20%7B%20return%20aBlock%28%29%3B%20%7D%0D%0A%09return%20value%3B%27%7D"));
smalltalk.bind(smalltalk.Array,"at:put:",0
,function (anIndex,anObject){var self=this; return self[anIndex - 1] = anObject;return self;}
,"accessing",unescape("at%3A%20anIndex%20put%3A%20anObject%0D%0A%09%22%20Set%20the%20contents%20of%20the%20receiver%20at%20anIndex.%20%22%0D%0A%0D%0A%7B%27%09return%20self%5BanIndex%20-%201%5D%20%3D%20anObject%27%7D"));
smalltalk.bind(smalltalk.Array,"do:",0
,function (aBlock){var self=this; for(var i=0;i<self.length;i++){aBlock(self[i]);} ;return self;}
,"enumerating",unescape("do%3A%20aBlock%0D%0A%09%22%20Evaluate%20aBlock%20with%20the%20contents%20of%20the%20receiver.%20%22%0D%0A%0D%0A%7B%27%09for%28var%20i%3D0%3Bi%3Cself.length%3Bi++%29%7BaBlock%28self%5Bi%5D%29%3B%7D%20%27%7D"));
smalltalk.bind(smalltalk.Array,"first",0
,function (){var self=this;return (function(){var $1$ = self[(0)];if (typeof ($1$) == "undefined") return (function(){return self.at_((1));})(); return $1$;})();;return self;}
,"accessing",unescape("first%0D%0A%09%22%20Return%20the%20object%20in%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%5B0%5D%20ifUndefined%3A%20%5Bself%20at%3A%201%5D"));
smalltalk.bind(smalltalk.Array,"fourth",0
,function (){var self=this;return (function(){var $1$ = self[(3)];if (typeof ($1$) == "undefined") return (function(){return self.at_((4));})(); return $1$;})();;return self;}
,"accessing",unescape("fourth%0D%0A%09%22%20Return%20the%20object%20in%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%5B3%5D%20ifUndefined%3A%20%5Bself%20at%3A%204%5D"));
smalltalk.bind(smalltalk.Array,"isArray",0
,function (){var self=this;return (nil.is_eqeq_(self.$klass,smalltalk.Array));;return self;}
,"testing",unescape("isArray%0D%0A%09%22%20Return%20true%20if%20the%20receiver%20is%20an%20Array.%20%22%0D%0A%0D%0A%09%5Eself%20class%20%3D%3D%20Array"));
smalltalk.bind(smalltalk.Array,"second",0
,function (){var self=this;return (function(){var $1$ = self[(1)];if (typeof ($1$) == "undefined") return (function(){return self.at_((2));})(); return $1$;})();;return self;}
,"accessing",unescape("second%0D%0A%09%22%20Return%20the%20object%20in%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%5B1%5D%20ifUndefined%3A%20%5Bself%20at%3A%202%5D"));
smalltalk.bind(smalltalk.Array,"shallowCopy",0
,function (){var self=this;return self.slice((0));;return self;}
,"copying",unescape("shallowCopy%0D%0A%09%22%20Return%20a%20shallow%20copy%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%20%23slice%3A%200"));
smalltalk.bind(smalltalk.Array,"size",0
,function (){var self=this;return self.length;;return self;}
,"accessing",unescape("size%0D%0A%09%22%20Return%20the%20size%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%23length"));
smalltalk.bind(smalltalk.Array,"third",0
,function (){var self=this;return (function(){var $1$ = self[(2)];if (typeof ($1$) == "undefined") return (function(){return self.at_((3));})(); return $1$;})();;return self;}
,"accessing",unescape("third%0D%0A%09%22%20Return%20the%20object%20in%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%5B2%5D%20ifUndefined%3A%20%5Bself%20at%3A%203%5D"));
smalltalk.bind(smalltalk.Array.$klass,"new","$$new"
,function (){var self=this;return [];;return self;}
,"instantiation",unescape("new%0D%0A%09%22%20Return%20an%20instance%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5E%23%28%29"));
smalltalk.bind(smalltalk.Array.$klass,"with:",0
,function (anObject){var self=this; return [ anObject ]; ;return self;}
,"instantiation",unescape("with%3A%20anObject%0D%0A%09%22%20Return%20an%20instance%20of%20the%20receiver.%20%22%0D%0A%0D%0A%7B%27%09return%20%5B%20anObject%20%5D%3B%09%27%7D"));
smalltalk.bind(smalltalk.Array.$klass,"with:with:",0
,function (anObject,anotherObject){var self=this; return [ anObject, anotherObject ]; ;return self;}
,"instantiation",unescape("with%3A%20anObject%20with%3A%20anotherObject%0D%0A%09%22%20Return%20an%20instance%20of%20the%20receiver.%20%22%0D%0A%0D%0A%7B%27%09return%20%5B%20anObject%2C%20anotherObject%20%5D%3B%09%27%7D"));
smalltalk.bind(smalltalk.Array.$klass,"with:with:with:",0
,function (firstObject,secondObject,thirdObject){var self=this; return [ firstObject, secondObject, thirdObject ]; ;return self;}
,"instantiation",unescape("with%3A%20firstObject%20with%3A%20secondObject%20with%3A%20thirdObject%0D%0A%09%22%20Return%20an%20instance%20of%20the%20receiver.%20%22%0D%0A%0D%0A%7B%27%09return%20%5B%20firstObject%2C%20secondObject%2C%20thirdObject%20%5D%3B%09%27%7D"));
smalltalk.bind(smalltalk.Behavior,"new","$$new"
,function (){var self=this;return self.basicNew().initialize();;return self;}
,"instantiation",unescape("new%0D%0A%09%22%20Return%20an%20instance%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%20basicNew%20initialize"));
smalltalk.bind(smalltalk.Behavior,">>>","_gt_gt_gt"
,function (aSymbol){var $s8Ret$={name:"stReturn"};try{var self=this;var result=nil;result=self.compiledMethodAt_(aSymbol);
(((nil.isNil_(result)).and_((function(){return (nil.isNil_(self.superclass())===false);}))).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return self.superclass()._gt_gt_gt(aSymbol);})();throw($s8Ret$)})();})() : nil);
(function(){$s8Ret$.result=(function(){return result;})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"accessing",unescape("%3E%3E%3E%20aSymbol%0D%0A%09%22%20Return%20the%20method%20at%20aSymbol%20searching%20up%20in%20receiver%27s%20hierarchy%20%28or%20nil%20if%20not%20implemented%20by%20the%20receiver%20nor%20its%20superclasses%29.%20%22%0D%0A%0D%0A%09%7C%20result%20%7C%0D%0A%09result%20%3A%3D%20self%20compiledMethodAt%3A%20aSymbol.%0D%0A%09%28result%20isNil%20and%3A%20%5Bself%20superclass%20notNil%5D%29%20ifTrue%3A%20%5B%0D%0A%09%09%5Eself%20superclass%20%3E%3E%3E%20aSymbol%0D%0A%09%5D.%0D%0A%09%5Eresult"));
smalltalk.bind(smalltalk.Behavior,"addCompiledMethod:",0
,function (aMethod){var $s8Ret$={name:"stReturn"};try{var self=this;var isDoIt=nil;isDoIt=aMethod.selector()._eq(smalltalk.String.doItSelector());
(((nil.isNil_(smalltalk.OverwriteMethods)===false).and_((function(){return smalltalk.OverwriteMethods;}))).mustBeBoolean()==true ? nil : (function(){return ((self.implements_(aMethod.selector())).mustBeBoolean()==true ? (function(){return ((isDoIt).mustBeBoolean()==true ? nil : (function(){(((nil.isNil_(smalltalk.DumpOverwritenMethods)===false).and_((function(){return smalltalk.DumpOverwritenMethods.and_((function(){return (nil.isNil_(smalltalk.Exporter)===false);}));}))).mustBeBoolean()==true ? (function(){self.print_(unescape("//%3F%20")._comma(self.name())._comma(unescape("%3E%3E%23"))._comma(aMethod.selector()));return self.print_(smalltalk.Exporter.$$new().export_method_(self, aMethod));})() : (function(){return self.print_(unescape("//-Overwrite%20Conflict-%20")._comma(self.name())._comma(unescape("%3E%3E%23"))._comma(aMethod.selector()));})());return (function(){$s8Ret$.result=(function(){return self;})();throw($s8Ret$)})();})());})() : nil);})());
(((nil.isNil_(smalltalk.Exporter)===false).and_((function(){return isDoIt.not();}))).mustBeBoolean()==true ? (function(){return self.print_(smalltalk.Exporter.$$new().export_method_(self, aMethod));})() : nil);
(function(){$s8Ret$.result=(function(){return self.basicAddCompiledMethod_(aMethod);})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"methods",unescape("addCompiledMethod%3A%20aMethod%0D%0A%09%22%20Add%20the%20compiled%20method%2C%20if%20appropiate%2C%20and%20register%20the%20method%20in%20recent%20methods.%20%22%0D%0A%0D%0A%09%7C%20isDoIt%20%7C%0D%0A%09isDoIt%20%3A%3D%20aMethod%20selector%20%3D%20String%20doItSelector.%0D%0A%09%28OverwriteMethods%20notNil%20and%3A%20%5B%09OverwriteMethods%20%5D%29%20ifFalse%3A%20%5B%0D%0A%09%09%28self%20implements%3A%20aMethod%20selector%29%20ifTrue%3A%20%5B%0D%0A%09%09%09isDoIt%20ifFalse%3A%20%5B%0D%0A%09%09%09%09%28DumpOverwritenMethods%20notNil%0D%0A%09%09%09%09and%3A%20%5B%20DumpOverwritenMethods%0D%0A%09%09%09%09and%3A%20%5B%20Exporter%20notNil%20%5D%5D%29%20ifTrue%3A%20%5B%0D%0A%09%09%09%09%09self%20print%3A%20%27//%3F%20%27%2Cself%20name%2C%27%3E%3E%23%27%2CaMethod%20selector.%0D%0A%09%09%09%09%09self%20print%3A%20%28Exporter%20new%20export%3A%20self%20method%3A%20aMethod%29.%0D%0A%09%09%09%09%5D%20ifFalse%3A%20%5B%0D%0A%09%09%09%09%09self%20print%3A%20%27//-Overwrite%20Conflict-%20%27%2Cself%20name%2C%27%3E%3E%23%27%2CaMethod%20selector.%0D%0A%09%09%09%09%5D.%0D%0A%09%09%09%09%5Eself%0D%0A%09%09%09%5D.%0D%0A%09%09%5D.%0D%0A%09%5D.%0D%0A%09%28Exporter%20notNil%20and%3A%20%5B%20isDoIt%20not%20%5D%29%20ifTrue%3A%20%5B%0D%0A%22%20DEBUG%20-%09self%20print%3A%20%27//%20%27%2Cself%20name%2C%27%3E%3E%23%27%2CaMethod%20selector.%22%0D%0A%09%09self%20print%3A%20%28Exporter%20new%20export%3A%20self%20method%3A%20aMethod%29.%0D%0A%09%5D.%0D%0A%09%5Eself%20basicAddCompiledMethod%3A%20aMethod"));
smalltalk.bind(smalltalk.Behavior,"basicAddCompiledMethod:",0
,function (aMethod){var self=this;smalltalk.APIBuilder.register_(aMethod);
smalltalk.addMethod(aMethod.selector().asSelector(), aMethod, self);return self;}
,"Builders-private",unescape("basicAddCompiledMethod%3A%20aMethod%0D%0A%09%22%20Private%20-%20Effectivelly%20add%20aMethod%20to%20the%20receiver.%20%22%0D%0A%0D%0A%09APIBuilder%20register%3A%20aMethod.%0D%0A%09%23%7Bsmalltalk%7D%20%23addMethod%3A%20aMethod%20selector%20asSelector%20method%3A%20aMethod%20to%3A%20self"));
smalltalk.bind(smalltalk.Behavior,"basicNew",0
,function (){var self=this; return new self.$fn();return self;}
,"instantiation",unescape("basicNew%0D%0A%09%22%20Return%20a%20new%20%28non-initialized%29%20instance%20of%20the%20receiver.%20%22%0D%0A%0D%0A%7B%27%09return%20new%20self.%24fn%28%29%27%7D"));
smalltalk.bind(smalltalk.Behavior,"classVariableAt:ifAbsent:",0
,function (aName,aBlock){var $s8Ret$={name:"stReturn"};try{var self=this;var bindings=nil;self.instanceClass().withAllSuperclassesDo_((function(each){bindings=each.classVariables();return (((nil.isNil_(bindings)===false)).mustBeBoolean()==true ? (function(){return ((bindings.includesKey_(aName)).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return bindings.at_(aName);})();throw($s8Ret$)})();})() : nil);})() : nil);}));
(function(){$s8Ret$.result=(function(){return aBlock.evaluate();})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"accessing",unescape("classVariableAt%3A%20aName%20ifAbsent%3A%20aBlock%0D%0A%09%22%20Return%20the%20value%20of%20classVariable%20named%20aName.%20%22%0D%0A%0D%0A%09%7C%20bindings%20%7C%0D%0A%09self%20instanceClass%20withAllSuperclassesDo%3A%20%5B%3Aeach%7C%0D%0A%09%09bindings%20%3A%3D%20each%20classVariables.%0D%0A%09%09bindings%20notNil%20ifTrue%3A%20%5B%0D%0A%09%09%09%28bindings%20includesKey%3A%20aName%29%20ifTrue%3A%20%5B%0D%0A%09%09%09%09%5Ebindings%20at%3A%20aName%0D%0A%09%09%09%5D%0D%0A%09%09%5D%0D%0A%09%5D.%0D%0A%09%5EaBlock%20evaluate"));
smalltalk.bind(smalltalk.Behavior,"compiledMethodAt:",0
,function (aSymbol){var self=this; return self.$fn.prototype.$methods[aSymbol] || nil; ;return self;}
,"accessing",unescape("compiledMethodAt%3A%20aSymbol%0D%0A%09%22%20Return%20the%20compiled%20method%20at%20aSymbol%20implemented%20by%20the%20receiver%20%28or%20nil%29.%20%22%0D%0A%0D%0A%7B%27%09return%20self.%24fn.prototype.%24methods%5BaSymbol%5D%20%7C%7C%20nil%3B%20%27%7D"));
smalltalk.bind(smalltalk.Behavior,"name",0
,function (){var self=this;return ((function(){var $1$=self["$className"];if(nil.isNil_($1$))return nil;return $1$;})());;return self;}
,"accessing",unescape("name%0D%0A%09%22%20Return%20the%20name%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%20basicAt%3A%20%27%24className%27"));
smalltalk.bind(smalltalk.Behavior,"removeCompiledMethod:",0
,function (aMethod){var self=this;self.smalltalk().removeMethod(self, aMethod);return self;}
,"private",unescape("removeCompiledMethod%3A%20aMethod%0D%0A%09%22%20Remove%20aMethod%20from%20the%20receiver.%20%22%0D%0A%0D%0A%09self%20smalltalk%20%23removeMethod%3A%20self%20method%3A%20aMethod"));
smalltalk.bind(smalltalk.Behavior,"removeSelector:",0
,function (aSelector){var self=this;var method=nil;method=self.compiledMethodAt_(aSelector);
(((nil.isNil_(method)===false)).mustBeBoolean()==true ? (function(){return self.removeCompiledMethod_(method);})() : nil);return self;}
,"methods",unescape("removeSelector%3A%20aSelector%0D%0A%09%22%20Remove%20the%20method%20for%20message%20aSelector%20implemented%20by%20the%20receiver.%20%22%0D%0A%0D%0A%09%7C%20method%20%7C%0D%0A%09method%20%3A%3D%20self%20compiledMethodAt%3A%20aSelector.%0D%0A%09method%20notNil%20ifTrue%3A%20%5B%20self%20removeCompiledMethod%3A%20method%20%5D."));
smalltalk.bind(smalltalk.Behavior,"superclass",0
,function (){var self=this;return ((function(){var $1$=self["$superclass"];if(nil.isNil_($1$))return nil;return $1$;})());;return self;}
,"accessing",unescape("superclass%0D%0A%09%22%20Return%20the%20superclass%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%20basicAt%3A%20%27%24superclass%27"));
smalltalk.bind(smalltalk.Behavior,"withAllSuperclassesDo:",0
,function (aBlock){var self=this;aBlock.value_(self);
return self.allSuperclassesDo_(aBlock);;return self;}
,"accessing",unescape("withAllSuperclassesDo%3A%20aBlock%0D%0A%09%22%20Evaluate%20aBlock%20with%20the%20receiver%20and%20it%27s%20superclasses.%0D%0A%09The%20superclasses%20are%20walked%20in%20inverse%20hierarchical%20order%2C%20i.e%20class%20Object%20is%20last.%0D%0A%09%22%0D%0A%0D%0A%09aBlock%20value%3A%20self.%0D%0A%09%5Eself%20allSuperclassesDo%3A%20aBlock"));
smalltalk.bind(smalltalk.BlockClosure,"ensure:",0
,function (aBlock){var self=this; try{return self();} finally {aBlock();} ;return self;}
,"error",unescape("ensure%3A%20aBlock%0D%0A%09%22%20Returns%20the%20result%20of%20evaluating%20the%20receiver.%0D%0A%09Execute%20aBlock%20after%20the%20receiver%20is%20executed.%0D%0A%09%22%0D%0A%0D%0A%7B%27%09try%7Breturn%20self%28%29%3B%7D%20finally%20%7BaBlock%28%29%3B%7D%09%27%7D"));
smalltalk.bind(smalltalk.BlockClosure,"evaluate",0
,function (){var self=this;return self();;return self;}
,"evaluating",unescape("evaluate%0D%0A%09%22%20Return%20the%20result%20of%20evaluating%20the%20receiver.%20%22%0D%0A%0D%0A%09%5E%23%20self"));
smalltalk.bind(smalltalk.BlockClosure,"evaluateWithArguments:",0
,function (anArray){var self=this;return self.valueWithPossibleArguments_(anArray);;return self;}
,"evaluating",unescape("evaluateWithArguments%3A%20anArray%0D%0A%09%22%20Return%20the%20result%20of%20evaluating%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%20valueWithPossibleArguments%3A%20anArray"));
smalltalk.bind(smalltalk.BlockClosure,"on:do:",0
,function (anExceptionType,aBlock){var self=this;return self.try_catch_(self, (function(error){return ((smalltalk.is_kindOf_(error,(anExceptionType))).mustBeBoolean()==true ? (function(){return aBlock.value_(error);})() : (function(){return error.signal();})());}));;return self;}
,"error",unescape("on%3A%20anExceptionType%20do%3A%20aBlock%0D%0A%09%22%20Return%20the%20result%20of%20evaluating%20the%20receiver%20catching%20exceptions.%20%22%0D%0A%0D%0A%09%5Eself%20try%3A%20self%20catch%3A%20%5B%3Aerror%20%7C%0D%0A%09%09%28error%20isKindOf%3A%20anExceptionType%29%0D%0A%09%09ifTrue%3A%20%5B%20aBlock%20value%3A%20error%20%5D%0D%0A%09%09ifFalse%3A%20%5B%20error%20signal%20%5D%0D%0A%09%5D"));
smalltalk.bind(smalltalk.BlockClosure,"try:catch:",0
,function (aBlock,anotherBlock){var self=this; var result;
try{ result = aBlock() } catch(e) {
result = anotherBlock( self.smalltalkErrorOf_(e) )
};
return result;;return self;}
,"private",unescape("try%3A%20aBlock%20catch%3A%20anotherBlock%0D%0A%09%22%20Private%20-%20Try%20to%20evaluate%20aBlock%20catching%20exceptions%20with%20catchBlock.%20%22%0D%0A%0D%0A%7B%27%09var%20result%3B%0D%0A%09try%7B%20result%20%3D%20aBlock%28%29%20%7D%20catch%28e%29%20%7B%0D%0A%09%09result%20%3D%20anotherBlock%28%20self.smalltalkErrorOf_%28e%29%20%29%0D%0A%09%7D%3B%0D%0A%09return%20result%3B%27%7D"));
smalltalk.bind(smalltalk.BlockClosure,"value",0
,function (){var self=this;return self();;return self;}
,"evaluating",unescape("value%0D%0A%09%22%20Return%20the%20result%20of%20evaluating%20the%20receiver.%20%22%0D%0A%0D%0A%09%5E%23%20%23self"));
smalltalk.bind(smalltalk.BlockClosure,"valueWithPossibleArguments:",0
,function (aCollection){var self=this;((aCollection.isArray()).mustBeBoolean()==true ? nil : (function(){return self.error_(unescape("//%20Invalid%20arguments%20in%20%23valueWithPossibleArguments%3A%20%28must%20be%20anArray%29.%20receiver%3D")._comma(self.toString()));})());
return self.apply(null, aCollection);;return self;}
,"evaluating",unescape("valueWithPossibleArguments%3A%20aCollection%0D%0A%09%22%20Return%20the%20result%20of%20evaluating%20the%20receiver%20with%20potential%20arguments.%20%22%0D%0A%0D%0A%09aCollection%20isArray%20ifFalse%3A%20%5B%0D%0A%09%09self%20error%3A%20%27//%20Invalid%20arguments%20in%20%23valueWithPossibleArguments%3A%20%28must%20be%20anArray%29.%20receiver%3D%27%2Cself%20toString%0D%0A%09%5D.%0D%0A%09%5Eself%20%23apply%3A%20%23%7Bnull%7D%20arguments%3A%20aCollection"));
smalltalk.bind(smalltalk.BlockClosure,"value:",0
,function (anObject){var self=this;return self(anObject);;return self;}
,"evaluating",unescape("value%3A%20anObject%0D%0A%09%22%20Return%20the%20result%20of%20evaluating%20the%20receiver%20with%20anObject.%20%22%0D%0A%0D%0A%09%5E%23%20%23self%3A%20anObject"));
smalltalk.bind(smalltalk.BlockNode,"accept:",0
,function (aVisitor){var self=this;aVisitor.visitBlockNode_(self);return self;}
,"visiting",unescape("accept%3A%20aVisitor%0D%0A%09aVisitor%20visitBlockNode%3A%20self"));
smalltalk.bind(smalltalk.BlockNode,"parameters",0
,function (){var self=this;(((nil.isNil_(self['@parameters']))).mustBeBoolean()==true ? (function(){return self['@parameters']=smalltalk.Array.$$new();})() : nil);
return self['@parameters'];;return self;}
,"accessing",unescape("parameters%0D%0A%09parameters%20isNil%20ifTrue%3A%20%5B%20parameters%20%3A%3D%20Array%20new%20%5D.%0D%0A%09%5Eparameters"));
smalltalk.bind(smalltalk.BlockNode,"parameters:",0
,function (aCollection){var self=this;self['@parameters']=aCollection;return self;}
,"accessing",unescape("parameters%3A%20aCollection%0D%0A%09parameters%20%3A%3D%20aCollection"));
smalltalk.bind(smalltalk.BlockSequenceNode,"accept:",0
,function (aVisitor){var self=this;aVisitor.visitBlockSequenceNode_(self);return self;}
,"visiting",unescape("accept%3A%20aVisitor%0D%0A%09aVisitor%20visitBlockSequenceNode%3A%20self"));
smalltalk.bind(smalltalk.Boolean,"and:",0
,function (aBlock){var self=this;return ((self).mustBeBoolean()==true ? (function(){return aBlock.value();})() : (function(){return false;})());;return self;}
,"control",unescape("and%3A%20aBlock%0D%0A%09%22%20Return%20true%20if%20the%20receiver%20is%20true%20and%20the%20result%20of%20evaluating%20aBlock%20is%20also%20true.%20%22%0D%0A%0D%0A%09%5Eself%20ifTrue%3A%20%5B%20aBlock%20value%20%5D%20ifFalse%3A%20%5Bfalse%5D"));
smalltalk.bind(smalltalk.Boolean,"mustBeBoolean",0
,function (){var self=this;return self;;return self;}
,"testing",unescape("mustBeBoolean%0D%0A%09%22%20Signal%20an%20error%20if%20the%20receiver%20is%20not%20a%20Boolean.%20%22%0D%0A%0D%0A%09%5Eself"));
smalltalk.bind(smalltalk.Boolean,"not",0
,function (){var self=this;return self == false ;;return self;}
,"control",unescape("not%0D%0A%09%22%20Return%20true%20if%20the%20receiver%20is%20false.%20%22%0D%0A%0D%0A%09%5E%7B%27%20self%20%3D%3D%20false%20%27%7D"));
smalltalk.bind(smalltalk.Boolean,"or:",0
,function (aBlock){var self=this;return ((self).mustBeBoolean()==true ? (function(){return true;})() : (function(){return aBlock.value();})());;return self;}
,"control",unescape("or%3A%20aBlock%0D%0A%09%22%20Return%20true%20if%20the%20receiver%20is%20true%20or%20the%20result%20of%20evaluating%20aBlock%20is%20true.%20%22%0D%0A%0D%0A%09%5Eself%20ifTrue%3A%20%5Btrue%5D%20ifFalse%3A%20%5B%20aBlock%20value%20%5D"));
smalltalk.bind(smalltalk.Class,"classVariables",0
,function (){var $s8Ret$={name:"stReturn"};try{var self=this;var names=nil;names=((function(){var $1$=self["$classVariableNames"];if(nil.isNil_($1$))return ((function(){return nil;}).value());return $1$;})());
(((nil.isNil_(names))).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return ((function(){var $1$=self["$classVariables"];if(nil.isNil_($1$))return nil;return $1$;})());})();throw($s8Ret$)})();})() : nil);
self.basicDelete_("$classVariableNames");
self.classVariableNames_(names);
(function(){$s8Ret$.result=(function(){return ((function(){var $1$=self["$classVariables"];if(nil.isNil_($1$))return nil;return $1$;})());})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"accessing",unescape("classVariables%0D%0A%09%22%20Return%20the%20class%20variables%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%7C%20names%20%7C%0D%0A%09names%20%3A%3D%20self%20basicAt%3A%20%27%24classVariableNames%27%20ifAbsent%3A%20%5B%5D.%0D%0A%09names%20isNil%20ifTrue%3A%20%5B%20%5Eself%20basicAt%3A%20%27%24classVariables%27%20%5D.%0D%0A%09self%20basicDelete%3A%20%27%24classVariableNames%27.%0D%0A%09self%20classVariableNames%3A%20names.%0D%0A%09%5Eself%20basicAt%3A%20%27%24classVariables%27"));
smalltalk.bind(smalltalk.Class,"instanceClass",0
,function (){var self=this;return self;;return self;}
,"accessing",unescape("instanceClass%0D%0A%09%22%20Return%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself"));
smalltalk.bind(smalltalk.Collection,"asArray",0
,function (){var self=this;var result=nil;var index=nil;result=smalltalk.Array.$$new();
index=(0);
self.do_((function(each){index=index._plus((1));return result.at_put_(index, each);}));
return result;;return self;}
,"converting",unescape("asArray%0D%0A%09%22%20Return%20an%20array%20with%20the%20contents%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%7C%20result%20index%20%7C%0D%0A%09result%20%3A%3D%20Array%20new.%0D%0A%09index%20%3A%3D%200.%0D%0A%09self%20do%3A%20%5B%3Aeach%20%7C%0D%0A%09%20%20%20%20index%20%3A%3D%20index%20+%201.%0D%0A%09%20%20%20%20result%20at%3A%20index%20put%3A%20each%0D%0A%09%5D.%0D%0A%09%5Eresult"));
smalltalk.bind(smalltalk.Collection,"collect:",0
,function (aBlock){var self=this;var result=nil;result=self.$klass.$$new();
self.do_((function(each){return result.add_(aBlock.value_(each));}));
return result;;return self;}
,"enumerating",unescape("collect%3A%20aBlock%0D%0A%09%22%20Return%20a%20collection%20with%20the%20result%20of%20evaluating%20aBlock%20with%20the%20contents%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%7C%20result%20%7C%0D%0A%09result%20%3A%3D%20self%20class%20new.%0D%0A%09self%20do%3A%20%5B%3Aeach%20%7C%20result%20add%3A%20%28aBlock%20value%3A%20each%29%20%5D.%0D%0A%09%5Eresult"));
smalltalk.bind(smalltalk.Collection,"copyWith:",0
,function (anObject){var self=this;return (function($rec){$rec.add_(anObject);return $rec.yourself();})(self.copy());;return self;}
,"copying",unescape("copyWith%3A%20anObject%0D%0A%09%22%20Return%20a%20copy%20of%20the%20receiver%20with%20anObject.%20%22%0D%0A%0D%0A%09%5Eself%20copy%20add%3A%20anObject%3B%20yourself"));
smalltalk.bind(smalltalk.Collection,"do:separatedBy:",0
,function (aBlock,anotherBlock){var self=this;var first=nil;first=true;
self.do_((function(each){((first).mustBeBoolean()==true ? (function(){return first=false;})() : (function(){return anotherBlock.value();})());return aBlock.value_(each);}));return self;}
,"enumerating",unescape("do%3A%20aBlock%20separatedBy%3A%20anotherBlock%0D%0A%09%22%20Evaluate%20aBlock%20for%20contents%20of%20the%20receiver%20evaluating%20anotherBlock%20inbetween%20aBlock%20evaluations.%20%22%0D%0A%0D%0A%09%7C%20first%20%7C%0D%0A%09first%20%3A%3D%20true.%0D%0A%09self%20do%3A%20%5B%3Aeach%20%7C%0D%0A%09%20%20%20%20first%0D%0A%09%09ifTrue%3A%20%5B%20first%20%3A%3D%20false%20%5D%0D%0A%09%09ifFalse%3A%20%5B%20anotherBlock%20value%20%5D.%0D%0A%09%20%20%20%20aBlock%20value%3A%20each%0D%0A%09%5D"));
smalltalk.bind(smalltalk.Collection,"readStream",0
,function (){var self=this;return self.stream();;return self;}
,"accessing",unescape("readStream%0D%0A%09%22%20Return%20a%20read%20stream%20on%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%20stream"));
smalltalk.bind(smalltalk.Collection,"stream",0
,function (){var self=this;return self.streamClass().on_(self);;return self;}
,"accessing",unescape("stream%0D%0A%09%22%20Return%20a%20stream%20on%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%20streamClass%20on%3A%20self"));
smalltalk.bind(smalltalk.Collection,"streamClass",0
,function (){var self=this;return self.$klass.streamClass();;return self;}
,"accessing",unescape("streamClass%0D%0A%09%22%20Private%20-%20Return%20the%20support%20for%20streamming%20on%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%20class%20streamClass"));
smalltalk.bind(smalltalk.Collection,"writeStream",0
,function (){var self=this;return self.stream();;return self;}
,"accessing",unescape("writeStream%0D%0A%09%22%20Return%20a%20write%20stream%20on%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%20stream"));
smalltalk.bind(smalltalk.CompiledMethod,"selector",0
,function (){var self=this;return ((function(){var $1$=self["$selector"];if(nil.isNil_($1$))return nil;return $1$;})());;return self;}
,"accessing",unescape("selector%0D%0A%09%22%20Return%20the%20selector%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%20basicAt%3A%20%27%24selector%27"));
smalltalk.bind(smalltalk.CompilerNodeVisitor,"visit:",0
,function (aNode){var self=this;aNode.accept_(self);return self;}
,"visiting",unescape("visit%3A%20aNode%0D%0A%09aNode%20accept%3A%20self"));
smalltalk.bind(smalltalk.CompilerNode,"addNode:",0
,function (aNode){var self=this;self.nodes().add_(aNode);return self;}
,"accessing",unescape("addNode%3A%20aNode%0D%0A%09self%20nodes%20add%3A%20aNode"));
smalltalk.bind(smalltalk.CompilerNode,"end",0
,function (){var self=this;return self['@end'];;return self;}
,"accessing",unescape("end%0D%0A%09%5Eend"));
smalltalk.bind(smalltalk.CompilerNode,"isAssignment",0
,function (){var self=this;return false;;return self;}
,"testing",unescape("isAssignment%0D%0A%09%22%20Return%20true%20if%20the%20receiver%20is%20of%20this%20type.%20%22%0D%0A%0D%0A%09%5Efalse"));
smalltalk.bind(smalltalk.CompilerNode,"isSuper",0
,function (){var self=this;return false;;return self;}
,"testing",unescape("isSuper%0D%0A%09%22%20Return%20true%20if%20the%20receiver%20is%20super.%20%22%0D%0A%0D%0A%09%5Efalse"));
smalltalk.bind(smalltalk.CompilerNode,"messageSendConnector",0
,function (){var self=this;return ".";;return self;}
,"accessing",unescape("messageSendConnector%0D%0A%09%22%20Return%20the%20binder%20used%20to%20send%20message%20to%20the%20receiver.%20%22%0D%0A%0D%0A%09%5E%27.%27"));
smalltalk.bind(smalltalk.CompilerNode,"nodes",0
,function (){var self=this;(((nil.isNil_(self['@nodes']))).mustBeBoolean()==true ? (function(){return self['@nodes']=smalltalk.Array.$$new();})() : nil);
return self['@nodes'];;return self;}
,"accessing",unescape("nodes%0D%0A%09nodes%20isNil%20ifTrue%3A%20%5B%20nodes%20%3A%3D%20Array%20new%20%5D.%0D%0A%09%5Enodes"));
smalltalk.bind(smalltalk.CompilerNode,"nodes:",0
,function (aCollection){var self=this;self['@nodes']=aCollection;return self;}
,"accessing",unescape("nodes%3A%20aCollection%0D%0A%09nodes%20%3A%3D%20aCollection"));
smalltalk.bind(smalltalk.CompilerNode,"start",0
,function (){var self=this;return self['@start'];;return self;}
,"accessing",unescape("start%0D%0A%09%5Estart"));
smalltalk.bind(smalltalk.CompilerNode,"start:end:",0
,function (startOffset,endOffset){var self=this;self['@start']=startOffset;
self['@end']=endOffset;return self;}
,"accessing",unescape("start%3A%20startOffset%20end%3A%20endOffset%0D%0A%09%22%20Set%20the%20offsets%20of%20the%20receiver%20in%20source%20code.%20%22%0D%0A%0D%0A%09start%20%3A%3D%20startOffset.%0D%0A%09end%20%3A%3D%20endOffset."));
smalltalk.bind(smalltalk.Compiler,"compileNode:",0
,function (aNode){var self=this;return (function($rec){$rec.startCompiling_(aNode);$rec.prepare_(aNode);$rec.visit_(aNode);$rec.endCompiling_(aNode);return $rec.emmitedCode();})(self);;return self;}
,"private",unescape("compileNode%3A%20aNode%0D%0A%09%22%20Private%20-%20Compile%20aNode.%20%22%0D%0A%0D%0A%09%5Eself%0D%0A%09%09startCompiling%3A%20aNode%3B%0D%0A%09%09prepare%3A%20aNode%3B%0D%0A%09%09visit%3A%20aNode%3B%0D%0A%09%09endCompiling%3A%20aNode%3B%0D%0A%09%09emmitedCode"));
smalltalk.bind(smalltalk.Compiler,"currentClass:",0
,function (aClass){var self=this;self['@currentClass']=aClass;return self;}
,"accessing",unescape("currentClass%3A%20aClass%0D%0A%09%22%20Set%20the%20current%20class%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09currentClass%20%3A%3D%20aClass"));
smalltalk.bind(smalltalk.Compiler,"defaultOptimizationMap",0
,function (){var self=this;return [[(0), [["class", unescape("%25receiver%25.%24klass")], ["isNil", unescape("%28nil.isNil_%28%25receiver%25%29%29")], ["notNil", unescape("%28nil.isNil_%28%25receiver%25%29%3D%3D%3Dfalse%29")], ["whileTrue", "receiverIsBlockNoArguments:", unescape("%28function%28%29%7Bwhile%28%25receiver%25%28%29%29%7B%7D%3Breturn%20nil%7D%29%28%29")], ["whileFalse", "receiverIsBlockNoArguments:", unescape("%28function%28%29%7Bwhile%28%21%25receiver%25%28%29%29%7B%7D%3Breturn%20nil%7D%29%28%29")], ["basicValueOrNil", unescape("%28function%28%29%7Bvar%20%241%24%3Breturn%20%28nil.isNil_%28%241%24%20%3D%20%25receiver%25%29%29%20%3F%20nil%20%3A%20%241%24%3B%7D%29%28%29")]]], [(1), [["ifTrue:", "hasBlockNoArguments:", unescape("%28%28%25receiver%25%29.mustBeBoolean%28%29%3D%3Dtrue%20%3F%20%25arg1%25%28%29%20%3A%20nil%29")], ["ifFalse:", "hasBlockNoArguments:", unescape("%28%28%25receiver%25%29.mustBeBoolean%28%29%3D%3Dtrue%20%3F%20nil%20%3A%20%25arg1%25%28%29%29")], ["whileTrue:", "allBlockNoArguments:", unescape("%28function%28%29%7Bwhile%28%25receiver%25%28%29%29%7B%25arg1%25%28%29%7D%3Breturn%20nil%7D%29%28%29")], ["whileFalse:", "allBlockNoArguments:", unescape("%28function%28%29%7Bwhile%28%21%25receiver%25%28%29%29%7B%25arg1%25%28%29%7D%3Breturn%20nil%7D%29%28%29")], ["ifNil:", "hasBlockArguments:", unescape("%28function%28%29%7Bvar%20%241%24%3Breturn%20%28nil.isNil_%28%241%24%20%3D%20%25receiver%25%29%29%20%3F%20%25arg1%25%28%29%20%3A%20%241%24%3B%7D%29%28%29")], ["ifNotNil:", "hasBlockArguments:", unescape("%28function%28%29%7Bvar%20%241%24%3Breturn%20%28nil.isNil_%28%241%24%20%3D%20%25receiver%25%29%3D%3D%3Dfalse%29%20%3F%20%25arg1%25%28%29%20%3A%20%241%24%3B%7D%29%28%29")], [unescape("%3D%3D"), unescape("%28nil.is_eqeq_%28%25receiver%25%2C%25arg1%25%29%29")], [unescape("%3D%3D%3D"), unescape("%28%25receiver%25%20%3D%3D%3D%20%25arg1%25%29")], [unescape("%7C%7C"), unescape("%28%25receiver%25%20%7C%7C%20%25arg1%25%29")], ["basicAt:", unescape("%28%28function%28%29%7Bvar%20%241%24%3D%25receiver%25%5B%25arg1%25%5D%3Bif%28nil.isNil_%28%241%24%29%29return%20nil%3Breturn%20%241%24%3B%7D%29%28%29%29")], ["ifUndefined:", "hasBlockNoArguments:", unescape("%28function%28%29%7Bvar%20%241%24%20%3D%20%25receiver%25%3Bif%20%28typeof%20%28%241%24%29%20%3D%3D%20%22undefined%22%29%20return%20%25arg1%25%28%29%3B%20return%20%241%24%3B%7D%29%28%29")], ["timesRepeat:", "hasBlockNoArguments:", unescape("%28function%28%29%7Bfor%28var%20%241%24%3D%25receiver%25%3B%241%24%3E0%3B%241%24--%29%7B%25arg1%25%28%29%7D%3Breturn%20nil%7D%29%28%29")], ["isKindOf:", unescape("smalltalk.is_kindOf_%28%25receiver%25%2C%28%25arg1%25%29%29")], ["respondsTo:", unescape("smalltalk.responds_to_%28%25receiver%25%2C%28%25arg1%25%29%29")]]], [(2), [["ifTrue:ifFalse:", "hasBlockNoArguments:", unescape("%28%28%25receiver%25%29.mustBeBoolean%28%29%3D%3Dtrue%20%3F%20%25arg1%25%28%29%20%3A%20%25arg2%25%28%29%29")], ["ifFalse:ifTrue:", "hasBlockNoArguments:", unescape("%28%28%25receiver%25%29.mustBeBoolean%28%29%3D%3Dtrue%20%3F%20%25arg2%25%28%29%20%3A%20%25arg1%25%28%29%29")], ["ifNil:ifNotNil:", "hasBlockNoArguments:", unescape("%28nil.isNil_%28%25receiver%25%29%29%20%3F%20%25arg1%25%28%29%20%3A%20%25arg2%25%28%29")], ["ifNotNil:ifNil:", "hasBlockNoArguments:", unescape("%28nil.isNil_%28%25receiver%25%29%3D%3D%3Dfalse%29%20%3F%20%25arg1%25%28%29%20%3A%20%25arg2%25%28%29")], ["basicAt:ifAbsent:", unescape("%28%28function%28%29%7Bvar%20%241%24%3D%25receiver%25%5B%25arg1%25%5D%3Bif%28nil.isNil_%28%241%24%29%29return%20%28%25arg2%25.value%28%29%29%3Breturn%20%241%24%3B%7D%29%28%29%29")], ["basicAt:put:", unescape("%28%25receiver%25%5B%25arg1%25%5D%3D%28%25arg2%25%29%29")]]]];;return self;}
,"optimization",unescape("defaultOptimizationMap%0D%0A%09%22%20Private%20-%20Return%20the%20default%20message%20optimization%20specification.%20%22%0D%0A%0D%0A%09%5E%23%28%0D%0A%09%09%23%28%200%20%23%28%20%22selectors%20without%20arguments%22%0D%0A%09%09%09%23%28%20%23class%09%27%25receiver%25.%24klass%27%20%29%0D%0A%09%09%09%23%28%20%23isNil%09%27%28nil.isNil_%28%25receiver%25%29%29%27%20%29%0D%0A%09%09%09%23%28%20%23notNil%09%27%28nil.isNil_%28%25receiver%25%29%3D%3D%3Dfalse%29%27%20%29%0D%0A%09%09%09%23%28%20%23whileTrue%20%23receiverIsBlockNoArguments%3A%20%27%28function%28%29%7Bwhile%28%25receiver%25%28%29%29%7B%7D%3Breturn%20nil%7D%29%28%29%27%20%29%0D%0A%09%09%09%23%28%20%23whileFalse%20%23receiverIsBlockNoArguments%3A%20%27%28function%28%29%7Bwhile%28%21%25receiver%25%28%29%29%7B%7D%3Breturn%20nil%7D%29%28%29%27%20%29%0D%0A%09%09%09%23%28%20%23basicValueOrNil%20%27%28function%28%29%7Bvar%20%241%24%3Breturn%20%28nil.isNil_%28%241%24%20%3D%20%25receiver%25%29%29%20%3F%20nil%20%3A%20%241%24%3B%7D%29%28%29%27%20%29%0D%0A%09%09%29%20%29%0D%0A%09%09%23%28%201%20%23%28%20%22one%20argument%20selectors%20and%20operations%22%0D%0A%09%09%09%23%28%20%23ifTrue%3A%20%23hasBlockNoArguments%3A%20%27%28%28%25receiver%25%29.mustBeBoolean%28%29%3D%3Dtrue%20%3F%20%25arg1%25%28%29%20%3A%20nil%29%27%20%29%0D%0A%09%09%09%23%28%20%23ifFalse%3A%20%23hasBlockNoArguments%3A%20%27%28%28%25receiver%25%29.mustBeBoolean%28%29%3D%3Dtrue%20%3F%20nil%20%3A%20%25arg1%25%28%29%29%27%20%29%0D%0A%09%09%09%23%28%20%23whileTrue%3A%20%23allBlockNoArguments%3A%20%27%28function%28%29%7Bwhile%28%25receiver%25%28%29%29%7B%25arg1%25%28%29%7D%3Breturn%20nil%7D%29%28%29%27%20%29%0D%0A%09%09%09%23%28%20%23whileFalse%3A%20%23allBlockNoArguments%3A%20%27%28function%28%29%7Bwhile%28%21%25receiver%25%28%29%29%7B%25arg1%25%28%29%7D%3Breturn%20nil%7D%29%28%29%27%20%29%0D%0A%09%09%09%23%28%20%23ifNil%3A%20%23hasBlockArguments%3A%20%27%28function%28%29%7Bvar%20%241%24%3Breturn%20%28nil.isNil_%28%241%24%20%3D%20%25receiver%25%29%29%20%3F%20%25arg1%25%28%29%20%3A%20%241%24%3B%7D%29%28%29%27%20%29%0D%0A%09%09%09%23%28%20%23ifNotNil%3A%20%23hasBlockArguments%3A%20%27%28function%28%29%7Bvar%20%241%24%3Breturn%20%28nil.isNil_%28%241%24%20%3D%20%25receiver%25%29%3D%3D%3Dfalse%29%20%3F%20%25arg1%25%28%29%20%3A%20%241%24%3B%7D%29%28%29%27%20%29%0D%0A%09%09%09%23%28%20%23%3D%3D%09%27%28nil.is_eqeq_%28%25receiver%25%2C%25arg1%25%29%29%27%20%29%0D%0A%09%09%09%23%28%20%23%3D%3D%3D%09%27%28%25receiver%25%20%3D%3D%3D%20%25arg1%25%29%27%20%29%0D%0A%09%09%09%23%28%20%23%7C%7C%09%27%28%25receiver%25%20%7C%7C%20%25arg1%25%29%27%20%29%0D%0A%09%09%09%23%28%20%23basicAt%3A%09%27%28%28function%28%29%7Bvar%20%241%24%3D%25receiver%25%5B%25arg1%25%5D%3Bif%28nil.isNil_%28%241%24%29%29return%20nil%3Breturn%20%241%24%3B%7D%29%28%29%29%27%20%29%0D%0A%09%09%09%23%28%20%23ifUndefined%3A%20%23hasBlockNoArguments%3A%20%27%28function%28%29%7Bvar%20%241%24%20%3D%20%25receiver%25%3Bif%20%28typeof%20%28%241%24%29%20%3D%3D%20%22undefined%22%29%20return%20%25arg1%25%28%29%3B%20return%20%241%24%3B%7D%29%28%29%27%20%29%0D%0A%09%09%09%23%28%20%23timesRepeat%3A%20%23hasBlockNoArguments%3A%20%27%28function%28%29%7Bfor%28var%20%241%24%3D%25receiver%25%3B%241%24%3E0%3B%241%24--%29%7B%25arg1%25%28%29%7D%3Breturn%20nil%7D%29%28%29%27%20%29%0D%0A%09%09%09%23%28%20%23isKindOf%3A%20%27smalltalk.is_kindOf_%28%25receiver%25%2C%28%25arg1%25%29%29%27%20%29%0D%0A%09%09%09%23%28%20%23respondsTo%3A%20%27smalltalk.responds_to_%28%25receiver%25%2C%28%25arg1%25%29%29%27%20%29%0D%0A%22%09%09%09%23%28%20%23%3E%20%23hasNumber%3A%20%27%28%25receiver%25%20%3E%20%25arg1%25%29%27%20%29%0D%0A%09%09%09%23%28%20%23%3C%20%23hasNumber%3A%20%27%28%25receiver%25%20%3C%20%25arg1%25%29%27%20%29%0D%0A%09%09%09%23%28%20%23%3E%3D%20%23hasNumber%3A%20%27%28%25receiver%25%20%3E%3D%20%25arg1%25%29%27%20%29%0D%0A%09%09%09%23%28%20%23%3C%3D%20%23hasNumber%3A%20%27%28%25receiver%25%20%3C%3D%20%25arg1%25%29%27%20%29%0D%0A%09%09%09%23%28%20%23+%20%23hasNumber%3A%20%27%28%25receiver%25%20+%20%25arg1%25%29%27%20%29%0D%0A%09%09%09%23%28%20%23-%20%23hasNumber%3A%20%27%28%25receiver%25%20-%20%25arg1%25%29%27%20%29%0D%0A%09%09%09%23%28%20%23*%20%23hasNumber%3A%20%27%28%25receiver%25%20*%20%25arg1%25%29%27%20%29%0D%0A%09%09%09%23%28%20%23/%20%23hasNumber%3A%20%27%28%25receiver%25%20/%20%25arg1%25%29%27%20%29%0D%0A%09%09%09%23%28%20%23%3D%20%20%23hasNumber%3A%20%27%28%25receiver%25%20%3D%3D%20%25arg1%25%29%27%20%29%0D%0A%22%09%09%29%20%29%0D%0A%09%09%23%28%202%20%23%28%20%22two%20argument%20messages%20and%20operations%22%0D%0A%09%09%09%23%28%20%23ifTrue%3AifFalse%3A%20%23hasBlockNoArguments%3A%20%27%28%28%25receiver%25%29.mustBeBoolean%28%29%3D%3Dtrue%20%3F%20%25arg1%25%28%29%20%3A%20%25arg2%25%28%29%29%27%20%29%0D%0A%09%09%09%23%28%20%23ifFalse%3AifTrue%3A%20%23hasBlockNoArguments%3A%20%27%28%28%25receiver%25%29.mustBeBoolean%28%29%3D%3Dtrue%20%3F%20%25arg2%25%28%29%20%3A%20%25arg1%25%28%29%29%27%20%29%0D%0A%09%09%09%23%28%20%23ifNil%3AifNotNil%3A%20%23hasBlockNoArguments%3A%20%27%28nil.isNil_%28%25receiver%25%29%29%20%3F%20%25arg1%25%28%29%20%3A%20%25arg2%25%28%29%27%20%29%0D%0A%09%09%09%23%28%20%23ifNotNil%3AifNil%3A%20%23hasBlockNoArguments%3A%20%27%28nil.isNil_%28%25receiver%25%29%3D%3D%3Dfalse%29%20%3F%20%25arg1%25%28%29%20%3A%20%25arg2%25%28%29%27%20%29%0D%0A%09%09%09%23%28%20%23basicAt%3AifAbsent%3A%20%27%28%28function%28%29%7Bvar%20%241%24%3D%25receiver%25%5B%25arg1%25%5D%3Bif%28nil.isNil_%28%241%24%29%29return%20%28%25arg2%25.value%28%29%29%3Breturn%20%241%24%3B%7D%29%28%29%29%27%20%29%0D%0A%09%09%09%23%28%20%23basicAt%3Aput%3A%20%27%28%25receiver%25%5B%25arg1%25%5D%3D%28%25arg2%25%29%29%27%20%29%0D%0A%09%09%29%20%29%0D%0A%29"));
smalltalk.bind(smalltalk.Compiler,"emmitEnterMethod:",0
,function (aNode){var self=this;self['@stream'].nextPutAll_(unescape("var%20self%3Dthis%3B"));return self;}
,"generation",unescape("emmitEnterMethod%3A%20aNode%0D%0A%09%22%20Private%20-%20Generate%20local%20definitions%20for%20aNode.%20%22%0D%0A%0D%0A%09stream%20nextPutAll%3A%20%27var%20self%3Dthis%3B%27"));
smalltalk.bind(smalltalk.Compiler,"emmitFunction:arguments:doing:",0
,function (fName,argList,aBlock){var self=this;self.triggerEvent_withArguments_ifNotHandled_("startFunction:with:", smalltalk.Array.with_with_(fName, argList), (function(){self['@stream'].nextPutAll_("function");self.triggerEvent_with_("startFunctionName:", fName);return self['@stream'].nextPutAll_(unescape("%28")._comma(argList)._comma(unescape("%29")));}));
self['@stream'].nextPutAll_(unescape("%7B"));
self.triggerEvent_withArguments_("startFunctionBody:with:", smalltalk.Array.with_with_(fName, argList));
aBlock.evaluate();
self['@stream'].nextPutAll_(unescape("%7D"));
self.triggerEvent_with_("endFunction:", fName);return self;}
,"generation",unescape("emmitFunction%3A%20fName%20arguments%3A%20argList%20doing%3A%20aBlock%0D%0A%09%22%20Private%20-%20Emmit%20function%20on%20receiver%27s%20code%20stream.%20%22%0D%0A%0D%0A%09self%0D%0A%09%09triggerEvent%3A%20%23startFunction%3Awith%3A%0D%0A%09%09withArguments%3A%20%28Array%20with%3A%20fName%20with%3A%20argList%29%0D%0A%09%09ifNotHandled%3A%20%5B%0D%0A%09%09%09stream%20nextPutAll%3A%20%27function%27.%0D%0A%09%09%09self%20triggerEvent%3A%20%23startFunctionName%3A%20with%3A%20fName.%0D%0A%09%09%09stream%20nextPutAll%3A%20%27%28%27%20%2CargList%20%2C%24%29%0D%0A%09%09%5D.%0D%0A%09stream%20nextPutAll%3A%20%24%7B.%0D%0A%09self%09triggerEvent%3A%20%23startFunctionBody%3Awith%3A%0D%0A%09%09withArguments%3A%20%28Array%20with%3A%20fName%20with%3A%20argList%29.%0D%0A%09aBlock%20evaluate.%0D%0A%09stream%20nextPutAll%3A%20%24%7D.%0D%0A%09self%20triggerEvent%3A%20%23endFunction%3A%20with%3A%20fName."));
smalltalk.bind(smalltalk.Compiler,"emmitFunction:node:arguments:doing:",0
,function (fName,aNode,argumentsArray,aBlock){var self=this;var args=nil;args="".writeStream();
argumentsArray.do_separatedBy_((function(each){self['@tempVariables'].add_(each);return args.nextPutAll_(self.localName_(each));}), (function(){return args.nextPutAll_(unescape("%2C"));}));
self.emmitFunction_arguments_doing_(fName, args.contents(), aBlock);return self;}
,"generation",unescape("emmitFunction%3A%20fName%20node%3A%20aNode%20arguments%3A%20argumentsArray%20doing%3A%20aBlock%0D%0A%09%22%20Private%20-%20Generate%20function%20for%20aNode.%20%22%0D%0A%0D%0A%09%7C%20args%20%7C%0D%0A%09args%20%3A%3D%20%27%27%20writeStream.%0D%0A%09argumentsArray%20do%3A%20%5B%3Aeach%20%7C%20%0D%0A%09%09tempVariables%20add%3A%20each.%0D%0A%09%09args%20nextPutAll%3A%20%28self%20localName%3A%20each%29%20%5D%0D%0A%09%20%20%20%20separatedBy%3A%20%5B%20args%20nextPutAll%3A%20%27%2C%27%20%5D.%0D%0A%09self%09emmitFunction%3A%20fName%0D%0A%09%09arguments%3A%20args%20contents%0D%0A%09%09doing%3A%20aBlock"));
smalltalk.bind(smalltalk.Compiler,"emmitFunction:node:doing:",0
,function (fName,aNode,aBlock){var self=this;return self.emmitFunction_node_arguments_doing_(fName, aNode, aNode.arguments(), aBlock);;return self;}
,"generation",unescape("emmitFunction%3A%20fName%20node%3A%20aNode%20doing%3A%20aBlock%0D%0A%09%22%20Private%20-%20Generate%20function%20for%20aNode.%20%22%0D%0A%0D%0A%09%5Eself%09emmitFunction%3A%20fName%0D%0A%09%09node%3A%20aNode%20arguments%3A%20aNode%20arguments%0D%0A%09%09doing%3A%20aBlock"));
smalltalk.bind(smalltalk.Compiler,"emmitMethod:",0
,function (aNode){var self=this;var code=nil;self['@functionName']=aNode.selector().asSelector();
self.emmitFunction_node_doing_(self['@functionName'], aNode, (function(){self.triggerEvent_with_("startMethod:", aNode);code=self.generatedCodeFor_while_(aNode, (function(){self.triggerEvent_withArguments_ifNotHandled_("enterMethod:", smalltalk.Array.with_(aNode), (function(){return self.emmitEnterMethod_(aNode);}));aNode.nodes().do_((function(each){return self.visit_(each);}));return self.emmitReturn_("self");}));self.generate_early_return_(self['@functionName'], self['@earlyReturn'], code);return self.triggerEvent_with_("endMethod:", aNode);}));return self;}
,"generation",unescape("emmitMethod%3A%20aNode%0D%0A%09%22%20Private%20-%20Generate%20code%20of%20method%20aNode.%20%22%0D%0A%0D%0A%09%7C%20code%20%7C%0D%0A%09functionName%20%3A%3D%20aNode%20selector%20asSelector.%0D%0A%09self%20emmitFunction%3A%20functionName%20node%3A%20aNode%20doing%3A%20%5B%0D%0A%09%09self%20triggerEvent%3A%20%23startMethod%3A%20with%3A%20aNode.%0D%0A%09%09code%20%3A%3D%20self%20generatedCodeFor%3A%20aNode%20while%3A%20%5B%0D%0A%09%09%09self%09triggerEvent%3A%20%23enterMethod%3A%20withArguments%3A%20%28Array%20with%3A%20aNode%29%0D%0A%09%09%09%09ifNotHandled%3A%20%5B%09self%20emmitEnterMethod%3A%20aNode%20%5D.%0D%0A%09%09%09aNode%20nodes%20do%3A%20%5B%3Aeach%20%7C%20self%20visit%3A%20each%20%5D.%0D%0A%09%09%09self%20emmitReturn%3A%20%23self.%0D%0A%09%09%5D.%0D%0A%09%09self%20generate%3A%20functionName%20early%3A%20earlyReturn%20return%3A%20code.%0D%0A%09%09self%20triggerEvent%3A%20%23endMethod%3A%20with%3A%20aNode.%0D%0A%09%5D"));
smalltalk.bind(smalltalk.Compiler,"emmitReturn:",0
,function (aBlockOrString){var self=this;return self.emmitReturn_early_(aBlockOrString, false);;return self;}
,"generation",unescape("emmitReturn%3A%20aBlockOrString%0D%0A%09%22%20Private%20-%20Generate%20return%20code.%20%22%0D%0A%0D%0A%09%5Eself%20emmitReturn%3A%20aBlockOrString%20early%3A%20false"));
smalltalk.bind(smalltalk.Compiler,"emmitReturn:early:",0
,function (aBlockOrString,early){var self=this;self.triggerEvent_with_("aboutReturn:", aBlockOrString);
self['@stream'].nextPutAll_("return ");
self.triggerEvent_with_("return:", aBlockOrString);
((aBlockOrString.isString()).mustBeBoolean()==true ? (function(){return self['@stream'].nextPutAll_(aBlockOrString);})() : (function(){return aBlockOrString.evaluate();})());
(((nil.isNil_(aBlockOrString)===false)).mustBeBoolean()==true ? (function(){self.triggerEvent_withArguments_("returned:early:", smalltalk.Array.with_with_(aBlockOrString, early));return self['@stream'].nextPutAll_(unescape("%3B"));})() : nil);return self;}
,"generation",unescape("emmitReturn%3A%20aBlockOrString%20early%3A%20early%0D%0A%09%22%20Private%20-%20Generate%20return%20code.%20%22%0D%0A%0D%0A%09self%20triggerEvent%3A%20%23aboutReturn%3A%20with%3A%20aBlockOrString.%0D%0A%09stream%20nextPutAll%3A%20%27return%20%27.%0D%0A%09self%20triggerEvent%3A%20%23return%3A%20with%3A%20aBlockOrString.%0D%0A%09aBlockOrString%20isString%0D%0A%09%09ifTrue%3A%20%5B%20stream%20nextPutAll%3A%20aBlockOrString%20%5D%0D%0A%09%09ifFalse%3A%20%5B%20aBlockOrString%20evaluate%20%5D.%0D%0A%09aBlockOrString%20notNil%20ifTrue%3A%20%5B%0D%0A%09%09self%09triggerEvent%3A%20%23returned%3Aearly%3A%0D%0A%09%09%09withArguments%3A%20%28Array%20with%3A%20aBlockOrString%20with%3A%20early%29.%0D%0A%09%09stream%20nextPutAll%3A%20%24%3B.%0D%0A%09%5D"));
smalltalk.bind(smalltalk.Compiler,"emmitedCode",0
,function (){var self=this;return (((nil.isNil_(self['@stream'])===false)).mustBeBoolean()==true ? (function(){return self['@stream'].contents();})() : nil);;return self;}
,"results",unescape("emmitedCode%0D%0A%09%22%20Return%20the%20emmited%20code%20during%20compilation%20%28or%20nil%29.%20%22%0D%0A%0D%0A%09%5Estream%20notNil%20ifTrue%3A%20%5B%20stream%20contents%20%5D"));
smalltalk.bind(smalltalk.Compiler,"endCompiling:",0
,function (aNode){var self=this;self.triggerEvent_with_("endCompiling:", aNode);return self;}
,"private",unescape("endCompiling%3A%20aNode%0D%0A%09%22%20Private%20-%20Finish%20emmiting%20code%20for%20aNode.%20%22%0D%0A%0D%0A%09self%20triggerEvent%3A%20%23endCompiling%3A%20with%3A%20aNode."));
smalltalk.bind(smalltalk.Compiler,"eval:",0
,function (jsExpression){var self=this;return smalltalk.Smalltalk.current().eval_(jsExpression);;return self;}
,"evaluation",unescape("eval%3A%20jsExpression%0D%0A%09%22%20Return%20the%20result%20of%20evaluating%20a%20javascript%20expression%20in%20global%20context.%20%22%0D%0A%0D%0A%09%5ESmalltalk%20current%20eval%3A%20jsExpression"));
smalltalk.bind(smalltalk.Compiler,"evaluate:",0
,function (smalltalkExpression){var self=this;return self.evaluate_in_to_(smalltalkExpression, nil.$klass, nil);;return self;}
,"doIt",unescape("evaluate%3A%20smalltalkExpression%0D%0A%09%22%20Return%20the%20result%20of%20evaluating%20the%20smalltalk%20expression%20in%20global%20context.%20%22%0D%0A%0D%0A%09%5Eself%20evaluate%3A%20smalltalkExpression%20in%3A%20nil%20class%20to%3A%20nil"));
smalltalk.bind(smalltalk.Compiler,"evaluate:in:to:",0
,function (smalltalkExpression,aClass,aReceiver){var self=this;var result=nil;var doIt=nil;var node=nil;var jsCode=nil;doIt=smalltalk.String.doItSelector();
self.currentClass_(aClass);
node=self.parseCode_(doIt._comma(unescape("%20%5E%5B"))._comma(smalltalkExpression)._comma(unescape("%5D%20value")));
jsCode=self.compileNode_(node);
aClass.addCompiledMethod_(self.eval_(jsCode));
(function(){return result=aReceiver.perform_(doIt);}).ensure_((function(){return aClass.removeSelector_(doIt);}));
return result;;return self;}
,"evaluation",unescape("evaluate%3A%20smalltalkExpression%20in%3A%20aClass%20to%3A%20aReceiver%0D%0A%09%22%20Return%20the%20result%20of%20evaluating%20the%20smalltalk%20expression%20with%20aReceiver.%20%22%0D%0A%0D%0A%09%7C%20result%20doIt%20node%20jsCode%20%7C%0D%0A%09doIt%20%3A%3D%20String%20doItSelector.%0D%0A%09self%20currentClass%3A%20aClass.%0D%0A%09node%20%3A%3D%20self%20parseCode%3A%20doIt%2C%27%20%5E%5B%27%2C%20smalltalkExpression%2C%20%27%5D%20value%27.%0D%0A%09jsCode%20%3A%3D%20self%20compileNode%3A%20node.%0D%0A%09aClass%20addCompiledMethod%3A%20%28self%20eval%3A%20jsCode%29.%0D%0A%09%5B%20result%20%3A%3D%20aReceiver%20perform%3A%20doIt.%0D%0A%09%5D%20ensure%3A%20%5B%20aClass%20removeSelector%3A%20doIt.%20%5D.%0D%0A%09%5Eresult"));
smalltalk.bind(smalltalk.Compiler,"generate:early:return:",0
,function (fName,early,code){var $s8Ret$={name:"stReturn"};try{var self=this;((early).mustBeBoolean()==true ? nil : (function(){return (function(){$s8Ret$.result=(function(){return self['@stream'].nextPutAll_(code);})();throw($s8Ret$)})();})());
(function($rec){$rec.nextPutAll_(unescape("var%20%24s8Ret%24%3D%7Bname%3A%22stReturn%22%7D%3Btry%7B"));return $rec.nextPutAll_(code);})(self['@stream']);
self['@stream'].nextPutAll_(unescape("%7D%20catch%28%24%24ex%29%20%7Bif%28%24%24ex%20%3D%3D%3D%20%24s8Ret%24%29%7B"));
self.emmitReturn_early_("$$ex.result", true);
self['@stream'].nextPutAll_(unescape("%7D%20throw%28%24%24ex%29%3B%7D"));return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"generation",unescape("generate%3A%20fName%20early%3A%20early%20return%3A%20code%0D%0A%09%22%20Private%20-%20Generate%20code%20to%20catch%20early%20return%20of%20code%20expression%20in%20fName.%20%22%0D%0A%0D%0A%09early%20ifFalse%3A%20%5B%20%5Estream%20nextPutAll%3A%20code%20%5D.%0D%0A%09stream%20nextPutAll%3A%20%27var%20%24s8Ret%24%3D%7Bname%3A%22stReturn%22%7D%3Btry%7B%27%3B%20nextPutAll%3A%20code.%0D%0A%09stream%20nextPutAll%3A%20%27%7D%20catch%28%24%24ex%29%20%7Bif%28%24%24ex%20%3D%3D%3D%20%24s8Ret%24%29%7B%27.%0D%0A%09self%20emmitReturn%3A%20%27%24%24ex.result%27%20early%3A%20true.%0D%0A%09stream%20nextPutAll%3A%20%27%7D%20throw%28%24%24ex%29%3B%7D%27"));
smalltalk.bind(smalltalk.Compiler,"generatedCodeFor:while:",0
,function (aNode,aBlock){var self=this;var backup=nil;var result=nil;backup=smalltalk.Array.with_with_(self['@stream'], self['@startOffset']);
self['@startOffset']=self['@stream'].position();
self['@stream']="".writeStream();
self.visit_doing_(aNode, aBlock);
result=self['@stream'].contents();
self['@stream']=backup.first();
self['@startOffset']=backup.last();
return result;;return self;}
,"generation",unescape("generatedCodeFor%3A%20aNode%20while%3A%20aBlock%0D%0A%09%22%20Private%20-%20Return%20the%20code%20generated%20during%20evaluation%20of%20aBlock.%20%22%0D%0A%0D%0A%09%7C%20backup%20result%20%7C%0D%0A%09backup%20%3A%3D%20Array%20with%3A%20stream%20with%3A%20startOffset.%0D%0A%09startOffset%20%3A%3D%20stream%20position.%0D%0A%09stream%20%3A%3D%20%27%27%20writeStream.%0D%0A%09self%20visit%3A%20aNode%20doing%3A%20aBlock.%0D%0A%09result%20%3A%3D%20stream%20contents.%0D%0A%09stream%20%3A%3D%20backup%20first.%0D%0A%09startOffset%20%3A%3D%20backup%20last.%0D%0A%09%5Eresult%20"));
smalltalk.bind(smalltalk.Compiler,"includeSourceCode",0
,function (){var self=this;return true;;return self;}
,"generation",unescape("includeSourceCode%0D%0A%09%22%20Private%20-%20Return%20true%20if%20source%20code%20is%20included%20as%20method%20argument.%20%22%0D%0A%0D%0A%09%5Etrue"));
smalltalk.bind(smalltalk.Compiler,"initialize",0
,function (){var self=this;smalltalk.superImplementor(smalltalk.Compiler,'initialize').apply(self, []);
self['@unknownVariables']=[];
self['@tempVariables']=[];return self;}
,"initialize",unescape("initialize%0D%0A%09%22%20Private%20-%20Initialize%20the%20receiver.%20%22%0D%0A%0D%0A%09super%20initialize.%0D%0A%09unknownVariables%20%3A%3D%20%23%28%29.%0D%0A%09tempVariables%20%3A%3D%20%23%28%29"));
smalltalk.bind(smalltalk.Compiler,"isOperation:",0
,function (aNode){var self=this;return aNode.arguments().size()._eq((1)).and_((function(){return aNode.selector().size()._gt((1)).and_((function(){return aNode.selector().first()._eq(unescape("%23")).and_((function(){return unescape("%7C%26%5C%5C+*/%3D%3E%3C%2C@%25%7E-").includes_(aNode.selector().at_((2)));}));}));}));;return self;}
,"operations",unescape("isOperation%3A%20aNode%0D%0A%09%22%20Private%20-%20Return%20true%20if%20aNode%20is%20an%20operation.%20%22%0D%0A%0D%0A%09%5EaNode%20arguments%20size%20%3D%201%20and%3A%20%5B%0D%0A%09%09aNode%20selector%20size%20%3E%201%20and%3A%20%5B%0D%0A%09%09aNode%20selector%20first%20%3D%20%24%23%20and%3A%20%5B%0D%0A%09%09%27%7C%26%5C%5C+*/%3D%3E%3C%2C@%25%7E-%27%20includes%3A%20%28aNode%20selector%20at%3A%202%29%0D%0A%09%09%5D%5D%5D"));
smalltalk.bind(smalltalk.Compiler,"newMethodFunctionName",0
,function (){var self=this;return "smalltalk.newMethod";;return self;}
,"generation",unescape("newMethodFunctionName%0D%0A%09%22%20Private%20-%20Return%20the%20function%20to%20call%20when%20installing%20a%20new%20method.%20%22%0D%0A%0D%0A%09%5E%27smalltalk.newMethod%27"));
smalltalk.bind(smalltalk.Compiler,"nodeFromTemplateIn:",0
,function (aString){var $s8Ret$={name:"stReturn"};try{var self=this;var src=nil;var driver=nil;var selector=nil;var count=nil;var found=nil;((aString.isEmpty().or_((function(){return aString.last()._eq(unescape("%22")).not();}))).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return nil;})();throw($s8Ret$)})();})() : nil);
src=aString.upToLast_(unescape("%22")).fromLast_(unescape("%22")).stream();
((src.peek()._eq(unescape("%23"))).mustBeBoolean()==true ? (function(){return src.next();})() : (function(){return (("template"._eq(src.nextLine().upTo_(" "))).mustBeBoolean()==true ? nil : (function(){return (function(){$s8Ret$.result=(function(){return nil;})();throw($s8Ret$)})();})());})());
driver=src.upTo_(" ");
((driver._eq("self")).mustBeBoolean()==true ? (function(){return driver=self;})() : nil);
((driver._eq("class")).mustBeBoolean()==true ? (function(){return driver=self.currentClass();})() : nil);
((driver._eq("api")).mustBeBoolean()==true ? (function(){return driver="APIBuilder";})() : nil);
((driver.isString()).mustBeBoolean()==true ? (function(){return driver=smalltalk.Smalltalk.at_ifAbsent_(driver, (function(){return nil;}));})() : nil);
selector=src.upTo_(" ");
((smalltalk.responds_to_(driver,(selector))).mustBeBoolean()==true ? nil : (function(){return (function(){$s8Ret$.result=(function(){return nil;})();throw($s8Ret$)})();})());
count=selector.occurrencesOf_(":");
found=(function(mth){return (((nil.isNil_(mth)===false)).mustBeBoolean()==true ? (function(){return (function($rec){$rec.source_(aString);return $rec.yourself();})(mth);})() : nil);});
((count._eq((0))).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return found.value_(driver.perform_(selector));})();throw($s8Ret$)})();})() : nil);
((count._eq((1))).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return found.value_(driver.perform_with_(selector, src.upToEnd()));})();throw($s8Ret$)})();})() : nil);
(function(){$s8Ret$.result=(function(){return nil;})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"templates",unescape("nodeFromTemplateIn%3A%20aString%0D%0A%09%22%20Returns%20the%20nodes%20syntetized%20from%20inlined%20templates%20in%20aString%20%28or%20nil%29.%0D%0A%09Inlined%20templates%20are%20detected%20from%20last%20comment%20in%20source.%0D%0A%09%22%0D%0A%0D%0A%09%7C%20src%20driver%20selector%20count%20found%20%7C%0D%0A%09%28aString%20isEmpty%20or%3A%20%5B%28aString%20last%20%3D%20%24%22%29%20not%5D%29%20ifTrue%3A%20%5B%20%5Enil%20%5D.%0D%0A%09src%20%3A%3D%20%28%28aString%20upToLast%3A%20%24%22%29%20fromLast%3A%20%24%22%29%20stream.%0D%0A%09src%20peek%20%3D%20%24%23%20ifTrue%3A%20%5B%20src%20next%20%5D%20ifFalse%3A%20%5B%0D%0A%09%09%23template%20%3D%20%28src%20nextLine%20upTo%3A%20%24%20%29%20ifFalse%3A%20%5B%20%5Enil%20%5D%0D%0A%09%5D.%0D%0A%09driver%20%3A%3D%20src%20upTo%3A%20%24%20.%0D%0A%09driver%20%3D%20%23self%20%20ifTrue%3A%20%5B%20driver%20%3A%3D%20self%20%5D.%0D%0A%09driver%20%3D%20%23class%20ifTrue%3A%20%5B%20driver%20%3A%3D%20self%20currentClass%20%5D.%0D%0A%09driver%20%3D%20%23api%20%20%20ifTrue%3A%20%5B%20driver%20%3A%3D%20%23APIBuilder%20%5D.%0D%0A%09driver%20isString%20ifTrue%3A%20%5B%20driver%20%3A%3D%20Smalltalk%20at%3A%20driver%20ifAbsent%3A%20%5B%5D%20%5D.%0D%0A%09selector%20%3A%3D%20src%20upTo%3A%20%24%20.%0D%0A%09%28driver%20respondsTo%3A%20selector%29%20ifFalse%3A%20%5B%20%5Enil%20%5D.%0D%0A%09count%20%3A%3D%20selector%20occurrencesOf%3A%20%24%3A.%0D%0A%09found%20%3A%3D%20%5B%3Amth%7C%20mth%20notNil%20ifTrue%3A%20%5B%20mth%20source%3A%20aString%3B%20yourself%20%5D%20%5D.%0D%0A%09count%20%3D%200%20ifTrue%3A%20%5B%20%5Efound%20value%3A%20%28driver%20perform%3A%20selector%29%20%5D.%0D%0A%09count%20%3D%201%20ifTrue%3A%20%5B%20%5Efound%20value%3A%20%28driver%20perform%3A%20selector%20with%3A%20src%20upToEnd%29%20%5D.%0D%0A%09%5Enil"));
smalltalk.bind(smalltalk.Compiler,"optimizationMap",0
,function (){var self=this;(((nil.isNil_(self['@optimizationMap']))).mustBeBoolean()==true ? (function(){self['@optimizationMap']=self.triggerEvent_ifNotHandled_("needsOptimizationMap", (function(){return self.defaultOptimizationMap();}));return self.triggerEvent_("customizeOptimizations");})() : nil);
return self['@optimizationMap'];;return self;}
,"accessing",unescape("optimizationMap%0D%0A%09%22%20Return%20the%20message%20send%20optimization%20map%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09optimizationMap%20isNil%20ifTrue%3A%20%5B%0D%0A%09%09optimizationMap%20%20%3A%3D%20self%0D%0A%09%09%09triggerEvent%3A%20%23needsOptimizationMap%0D%0A%09%09%09ifNotHandled%3A%20%5B%20self%20defaultOptimizationMap%20%5D.%0D%0A%09%09self%20triggerEvent%3A%20%23customizeOptimizations%0D%0A%09%5D.%0D%0A%09%5EoptimizationMap"));
smalltalk.bind(smalltalk.Compiler,"parseCode:",0
,function (aString){var $s8Ret$={name:"stReturn"};try{var self=this;var result=nil;self.triggerEvent_with_ifNotHandled_("aboutToParse:", aString, (function(){result=self.nodeFromTemplateIn_(aString);return (((nil.isNil_(result)===false)).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return result;})();throw($s8Ret$)})();})() : nil);}));
result=self.parser().parse_(aString.readStream());
(function(){$s8Ret$.result=(function(){return result;})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"parsing",unescape("parseCode%3A%20aString%0D%0A%09%22%20Parse%20the%20S8%20code%20in%20aString.%20%22%0D%0A%0D%0A%09%7C%20result%20%7C%0D%0A%09self%09triggerEvent%3A%20%23aboutToParse%3A%0D%0A%09%09with%3A%20aString%20ifNotHandled%3A%20%5B%0D%0A%09%09%09result%20%3A%3D%20self%20nodeFromTemplateIn%3A%20aString.%0D%0A%09%09%09result%20notNil%20ifTrue%3A%20%5B%20%5Eresult%20%5D%0D%0A%09%09%5D.%0D%0A%09result%20%3A%3D%20self%20parser%20parse%3A%20aString%20readStream.%0D%0A%09%5Eresult"));
smalltalk.bind(smalltalk.Compiler,"parser",0
,function (){var self=this;return self.triggerEvent_ifNotHandled_("needsParser", (function(){return smalltalk.SmalltalkParser.$$new();}));;return self;}
,"private",unescape("parser%0D%0A%09%22%20Private%20-%20Return%20the%20parser%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%09triggerEvent%3A%20%23needsParser%0D%0A%09%09ifNotHandled%3A%20%5B%20SmalltalkParser%20new%20%5D"));
smalltalk.bind(smalltalk.Compiler,"prepare:",0
,function (aNode){var self=this;self.transformers().do_((function(each){return each.visit_(aNode);}));return self;}
,"private",unescape("prepare%3A%20aNode%0D%0A%09%22%20Private%20-%20Apply%20tranformations/optimization%20to%20aNode.%20%22%0D%0A%0D%0A%09self%20transformers%20do%3A%20%5B%3Aeach%7C%20each%20visit%3A%20aNode%20%5D."));
smalltalk.bind(smalltalk.Compiler,"smalltalkNameFor:",0
,function (aClass){var self=this;return self.$klass.smalltalkNameFor_(aClass);;return self;}
,"private",unescape("smalltalkNameFor%3A%20aClass%0D%0A%09%22%20Private%20-%20Return%20the%20global%20name%20of%20aClass%20%28can%20be%20nil%29.%20%22%0D%0A%0D%0A%09%5Eself%20class%20smalltalkNameFor%3A%20aClass"));
smalltalk.bind(smalltalk.Compiler,"startCompiling:",0
,function (aNode){var self=this;self['@stream']="".writeStream();
self['@startOffset']=self['@stream'].position();
self.triggerEvent_with_("startCompiling:", aNode);return self;}
,"private",unescape("startCompiling%3A%20aNode%0D%0A%09%22%20Private%20-%20Set%20the%20receiver%20to%20start%20emmiting%20code%20for%20aNode.%20%22%0D%0A%0D%0A%09stream%20%3A%3D%20%27%27%20writeStream.%0D%0A%09startOffset%20%3A%3D%20stream%20position.%0D%0A%09self%20triggerEvent%3A%20%23startCompiling%3A%20with%3A%20aNode."));
smalltalk.bind(smalltalk.Compiler,"transformers",0
,function (){var self=this;(((nil.isNil_(self['@transformers']))).mustBeBoolean()==true ? (function(){self['@transformers']=smalltalk.Array.$$new();return self.triggerEvent_with_("setTransformers:", self['@transformers']);})() : nil);
return self['@transformers'];;return self;}
,"accessing",unescape("transformers%0D%0A%09%22%20Return%20the%20node%20transformers%20installed%20in%20the%20receiver.%20%22%0D%0A%0D%0A%09transformers%20isNil%20ifTrue%3A%20%5B%0D%0A%09%09transformers%20%3A%3D%20Array%20new.%0D%0A%09%09self%20triggerEvent%3A%20%23setTransformers%3A%20with%3A%20transformers.%0D%0A%09%5D.%0D%0A%09%5Etransformers"));
smalltalk.bind(smalltalk.Compiler,"visitArgument:",0
,function (aNode){var $s8Ret$={name:"stReturn"};try{var self=this;((aNode.isAssignment()).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return self.visitLocalAssignment_(aNode);})();throw($s8Ret$)})();})() : nil);
(function(){$s8Ret$.result=(function(){return self.visit_(aNode);})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"visiting",unescape("visitArgument%3A%20aNode%0D%0A%09%22%20Private%20-%20Visit%20the%20argument%20emmitting%20output.%20%22%0D%0A%0D%0A%09aNode%20isAssignment%20ifTrue%3A%20%5B%20%5Eself%20visitLocalAssignment%3A%20aNode.%20%5D.%0D%0A%09%5Eself%20visit%3A%20aNode"));
smalltalk.bind(smalltalk.Compiler,"visitBlockNode:",0
,function (aNode){var self=this;self['@stream'].nextPutAll_(unescape("%28"));
self.emmitFunction_node_arguments_doing_("", aNode, aNode.parameters(), (function(){return aNode.nodes().do_((function(each){return self.visit_(each);}));}));
self['@stream'].nextPutAll_(unescape("%29"));return self;}
,"visiting",unescape("visitBlockNode%3A%20aNode%0D%0A%09stream%20nextPutAll%3A%20%24%28.%0D%0A%09self%09emmitFunction%3A%20%27%27%20node%3A%20aNode%0D%0A%09%09arguments%3A%20aNode%20parameters%0D%0A%09%09doing%3A%20%5B%20aNode%20nodes%20do%3A%20%5B%3Aeach%20%7C%20self%20visit%3A%20each%20%5D%20%5D.%0D%0A%09stream%20nextPutAll%3A%20%24%29."));
smalltalk.bind(smalltalk.Compiler,"visitBlockSequenceNode:",0
,function (aNode){var self=this;var index=nil;self['@nestedBlocks']=self['@nestedBlocks']._plus((1));
((aNode.nodes().isEmpty()).mustBeBoolean()==true ? (function(){return self.emmitReturn_("nil");})() : (function(){aNode.temps().do_((function(each){self['@tempVariables'].add_(each);return self['@stream'].nextPutAll_("var "._comma(self.localName_(each))._comma(unescape("%3Dnil%3B")));}));index=(0);return aNode.nodes().do_((function(each){index=index._plus((1));return ((index._eq(aNode.nodes().size())).mustBeBoolean()==true ? (function(){return self.emmitReturn_((function(){return self.visit_(each);}));})() : (function(){self.visit_(each);return self['@stream'].nextPutAll_(unescape("%3B"));})());}));})());
self['@nestedBlocks']=self['@nestedBlocks']._minus((1));return self;}
,"visiting",unescape("visitBlockSequenceNode%3A%20aNode%0D%0A%09%7C%20index%20%7C%0D%0A%09nestedBlocks%20%3A%3D%20nestedBlocks%20+%201.%0D%0A%09aNode%20nodes%20isEmpty%0D%0A%09%20%20%20%20ifTrue%3A%20%5B%20self%20emmitReturn%3A%20%23nil%20%5D%0D%0A%09%20%20%20%20ifFalse%3A%20%5B%0D%0A%09%09aNode%20temps%20do%3A%20%5B%3Aeach%20%7C%0D%0A%09%09%20%20%20%20tempVariables%20add%3A%20each.%0D%0A%09%09%20%20%20%20stream%20nextPutAll%3A%20%27var%20%27%2C%20%28self%20localName%3A%20each%29%2C%20%27%3Dnil%3B%27%0D%0A%09%09%5D.%0D%0A%09%09index%20%3A%3D%200.%0D%0A%09%09aNode%20nodes%20do%3A%20%5B%3Aeach%20%7C%0D%0A%09%09%20%20%20%20index%20%3A%3D%20index%20+%201.%0D%0A%09%09%20%20%20%20index%20%3D%20aNode%20nodes%20size%0D%0A%09%09%09ifTrue%3A%20%5B%20self%20emmitReturn%3A%20%5B%20self%20visit%3A%20each%20%5D%20%5D%0D%0A%09%09%20%20%20%20%09ifFalse%3A%20%5B%20self%20visit%3A%20each.%20stream%20nextPutAll%3A%20%24%3B%20%5D%0D%0A%09%09%5D.%0D%0A%09%5D.%0D%0A%09nestedBlocks%20%3A%3D%20nestedBlocks%20-%201"));
smalltalk.bind(smalltalk.Compiler,"visitExtendedSequenceNode:",0
,function (aNode){var self=this;(((nil.isNil_(aNode.directive())===false)).mustBeBoolean()==true ? (function(){return (function($rec){$rec.nextPutAll_(aNode.directive().asJavascript_for_on_(self['@functionName'], self, self['@stream']));return $rec.cr();})(self['@stream']);})() : nil);
return self.visitSequenceNode_(aNode);;return self;}
,"visiting",unescape("visitExtendedSequenceNode%3A%20aNode%0D%0A%09%22%20Private%20-%20Visit%20a%20directive%20node.%20%22%0D%0A%0D%0A%09aNode%20directive%20notNil%20ifTrue%3A%20%5B%0D%0A%09%09stream%20nextPutAll%3A%20%28aNode%20directive%0D%0A%09%09%09asJavascript%3A%20functionName%0D%0A%09%09%09for%3A%20self%20on%3A%20stream%29%3B%20cr.%0D%0A%09%5D.%0D%0A%09%5Eself%20visitSequenceNode%3A%20aNode"));
smalltalk.bind(smalltalk.Compiler,"visitMethodNode:",0
,function (aNode){var self=this;self['@nestedBlocks']=(0);
self['@earlyReturn']=false;
self['@unknownVariables']=[];
self['@tempVariables']=[];
(function($rec){$rec.nextPutAll_(self.newMethodFunctionName()._comma(unescape("%28")));$rec.nextPutAll_(self.smalltalkNameFor_(self['@currentClass']));$rec.nextPutAll_(unescape("%2C%22")._comma(aNode.selector())._comma(unescape("%22%2C")));return $rec.cr();})(self['@stream']);
self.emmitMethod_(aNode);
((self.includeSourceCode()).mustBeBoolean()==true ? (function(){return (function($rec){$rec.cr();return $rec.nextPutAll_(unescape("%2C")._comma(aNode.source().escapedCode()));})(self['@stream']);})() : nil);
self['@stream'].nextPutAll_(unescape("%29"));return self;}
,"visiting",unescape("visitMethodNode%3A%20aNode%0D%0A%09nestedBlocks%20%3A%3D%200.%0D%0A%09earlyReturn%20%3A%3D%20false.%0D%0A%09unknownVariables%20%3A%3D%20%23%28%29.%0D%0A%09tempVariables%20%3A%3D%20%23%28%29.%0D%0A%09stream%20%0D%0A%09%09nextPutAll%3A%20self%20newMethodFunctionName%2C%20%27%28%27%3B%0D%0A%09%09nextPutAll%3A%20%28self%20smalltalkNameFor%3A%20currentClass%29%3B%0D%0A%09%09nextPutAll%3A%20%27%2C%22%27%2C%20aNode%20selector%2C%20%27%22%2C%27%3B%20cr.%0D%0A%09self%20emmitMethod%3A%20aNode.%0D%0A%09self%20includeSourceCode%20ifTrue%3A%20%5B%0D%0A%09%09stream%09cr%3B%20%22warning%3A%20this%20cr%20is%20important%20for%20debugger%22%0D%0A%09%09%09nextPutAll%3A%20%27%2C%27%20%2CaNode%20source%20escapedCode%0D%0A%09%5D.%0D%0A%09stream%20nextPutAll%3A%20%27%29%27"));
smalltalk.bind(smalltalk.Compiler,"visitNormalSend:",0
,function (aNode){var self=this;self.triggerEvent_with_("aboutSend:", aNode);
self.visitReceiver_(aNode.receiver());
(function($rec){$rec.nextPutAll_(aNode.receiver().messageSendConnector());$rec.nextPutAll_(aNode.selector().asSelector());return $rec.nextPutAll_(unescape("%28"));})(self['@stream']);
self.visitSendArguments_(aNode);
self['@stream'].nextPutAll_(unescape("%29"));
self.triggerEvent_with_("send:", aNode);return self;}
,"visiting",unescape("visitNormalSend%3A%20aNode%0D%0A%09%22%20Generate%20code%20for%20direct/inlined%20message%20send.%22%0D%0A%0D%0A%09self%20triggerEvent%3A%20%23aboutSend%3A%20with%3A%20aNode.%0D%0A%09self%20visitReceiver%3A%20aNode%20receiver.%0D%0A%09stream%0D%0A%09%09nextPutAll%3A%20aNode%20receiver%20messageSendConnector%3B%0D%0A%09%09nextPutAll%3A%20aNode%20selector%20asSelector%3B%0D%0A%09%09nextPutAll%3A%20%27%28%27.%0D%0A%09self%20visitSendArguments%3A%20aNode.%0D%0A%09stream%09nextPutAll%3A%20%27%29%27.%0D%0A%09self%20triggerEvent%3A%20%23send%3A%20with%3A%20aNode."));
smalltalk.bind(smalltalk.Compiler,"visitOptimizedSend:",0
,function (aNode){var self=this;return self.visitOptimizedSend_with_(aNode, self.optimizationMap());;return self;}
,"visiting",unescape("visitOptimizedSend%3A%20aNode%0D%0A%09%22%20Private%20-%20Generate%20optimal%20code%20for%20aNode%20using%20optimization%20map.%0D%0A%09Return%20true%20if%20optimization%20was%20successfull.%0D%0A%09%22%0D%0A%0D%0A%09%5Eself%20visitOptimizedSend%3A%20aNode%20with%3A%20self%20optimizationMap"));
smalltalk.bind(smalltalk.Compiler,"visitOptimizedSend:with:",0
,function (aNode,mapping){var $s8Ret$={name:"stReturn"};try{var self=this;var argCount=nil;argCount=aNode.arguments().size();
mapping.do_((function(tuple){return ((tuple.first().isNumber().and_((function(){return tuple.first()._eq(argCount);}))).mustBeBoolean()==true ? (function(){return ((self.visitOptimizedSend_with_(aNode, tuple.last())).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return true;})();throw($s8Ret$)})();})() : nil);})() : (function(){return ((tuple.first()._eq(aNode.selector())).mustBeBoolean()==true ? (function(){return ((self.visitOptimizedNode_as_(aNode, tuple)).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return true;})();throw($s8Ret$)})();})() : nil);})() : nil);})());}));
(function(){$s8Ret$.result=(function(){return false;})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"visiting",unescape("visitOptimizedSend%3A%20aNode%20with%3A%20mapping%0D%0A%09%22%20Private%20-%20Generate%20optimal%20code%20for%20aNode%20using%20mapping.%0D%0A%09Return%20true%20if%20the%20code%20has%20been%20generated.%0D%0A%09Leave%20the%20code%20stream%20intact%20if%20the%20optimization%20do%20not%20apply.%0D%0A%09%22%0D%0A%0D%0A%09%7C%20argCount%20%7C%0D%0A%09argCount%20%3A%3D%20aNode%20arguments%20size.%0D%0A%09mapping%20do%3A%20%5B%3Atuple%7C%0D%0A%09%09%28tuple%20first%20isNumber%20and%3A%20%5B%20tuple%20first%20%3D%20argCount%20%5D%29%20ifTrue%3A%20%5B%20%22arguments%20size%20match%22%0D%0A%09%09%09%28self%20visitOptimizedSend%3A%20aNode%20with%3A%20tuple%20last%29%20ifTrue%3A%20%5B%20%5Etrue%20%5D.%0D%0A%09%09%5D%20ifFalse%3A%20%5B%0D%0A%09%09%09tuple%20first%20%3D%20aNode%20selector%20ifTrue%3A%20%5B%20%22selector%20match%22%0D%0A%09%09%09%09%28self%20visitOptimizedNode%3A%20aNode%20as%3A%20tuple%29%20ifTrue%3A%20%5B%20%5Etrue%20%5D.%0D%0A%09%09%09%5D.%0D%0A%09%09%5D.%0D%0A%09%5D.%0D%0A%09%5Efalse"));
smalltalk.bind(smalltalk.Compiler,"visitReceiver:",0
,function (aNode){var $s8Ret$={name:"stReturn"};try{var self=this;((aNode.isAssignment()).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return self.visitLocalAssignment_(aNode);})();throw($s8Ret$)})();})() : nil);
(function(){$s8Ret$.result=(function(){return self.visit_(aNode);})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"visiting",unescape("visitReceiver%3A%20aNode%0D%0A%09%22%20Private%20-%20Visit%20the%20node%20%28as%20receiver%29%20emmitting%20output.%20%22%0D%0A%0D%0A%09aNode%20isAssignment%20ifTrue%3A%20%5B%20%5Eself%20visitLocalAssignment%3A%20aNode.%20%5D.%0D%0A%09%5Eself%20visit%3A%20aNode"));
smalltalk.bind(smalltalk.Compiler,"visitReturnNode:",0
,function (aNode){var $s8Ret$={name:"stReturn"};try{var self=this;var theReturn=nil;((self['@nestedBlocks']._gt((0))).mustBeBoolean()==true ? (function(){return self['@earlyReturn']=true;})() : nil);
theReturn=(function(){return self.emmitReturn_((function(){return aNode.nodes().do_((function(each){return self.visit_(each);}));}));});
((self['@earlyReturn']).mustBeBoolean()==true ? nil : (function(){return (function(){$s8Ret$.result=(function(){return theReturn.value();})();throw($s8Ret$)})();})());
self['@stream'].nextPutAll_(unescape("%28"));
self.emmitFunctionDoing_((function(){self['@stream'].nextPutAll_(unescape("%24s8Ret%24.result%3D%28"));self.emmitFunctionDoing_(theReturn);return self['@stream'].nextPutAll_(unescape("%29%28%29%3Bthrow%28%24s8Ret%24%29"));}));
self['@stream'].nextPutAll_(unescape("%29%28%29"));return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"visiting",unescape("visitReturnNode%3A%20aNode%0D%0A%0D%0A%09%7C%20theReturn%20%7C%0D%0A%09nestedBlocks%20%3E%200%20ifTrue%3A%20%5B%20earlyReturn%20%3A%3D%20true%20%5D.%0D%0A%09theReturn%20%3A%3D%20%5B%0D%0A%09%09self%20emmitReturn%3A%20%5B%0D%0A%09%09%09aNode%20nodes%20do%3A%20%5B%3Aeach%20%7C%20self%20visit%3A%20each%20%5D%0D%0A%09%09%5D%0D%0A%09%5D.%0D%0A%09earlyReturn%20ifFalse%3A%20%5B%20%5EtheReturn%20value%20%5D.%0D%0A%09stream%20nextPutAll%3A%20%24%28.%0D%0A%09self%20emmitFunctionDoing%3A%20%5B%0D%0A%09%09stream%20nextPutAll%3A%20%27%24s8Ret%24.result%3D%28%27.%0D%0A%09%09self%20emmitFunctionDoing%3A%20theReturn.%0D%0A%09%09stream%20nextPutAll%3A%20%27%29%28%29%3Bthrow%28%24s8Ret%24%29%27%0D%0A%09%5D.%0D%0A%09stream%20nextPutAll%3A%20%27%29%28%29%27."));
smalltalk.bind(smalltalk.Compiler,"visitSendArguments:",0
,function (aNode){var self=this;aNode.arguments().do_separatedBy_((function(each){return self.visitArgument_(each);}), (function(){return self['@stream'].nextPutAll_(unescape("%2C%20"));}));return self;}
,"visiting",unescape("visitSendArguments%3A%20aNode%0D%0A%09aNode%20arguments%20%0D%0A%09%20%20%20%20do%3A%20%5B%3Aeach%20%7C%20self%20visitArgument%3A%20each%20%5D%0D%0A%09%20%20%20%20separatedBy%3A%20%5B%20stream%20nextPutAll%3A%20%27%2C%20%27%20%5D."));
smalltalk.bind(smalltalk.Compiler,"visitSendNode:",0
,function (aNode){var $s8Ret$={name:"stReturn"};try{var self=this;((aNode.receiver().isSuper()).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return self.visitSendToSuper_(aNode);})();throw($s8Ret$)})();})() : nil);
((self.visitOptimizedSend_(aNode)).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return self;})();throw($s8Ret$)})();})() : nil);
((self.isOperation_(aNode)).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return self.visitOperation_(aNode);})();throw($s8Ret$)})();})() : nil);
(function(){$s8Ret$.result=(function(){return self.visitNormalSend_(aNode);})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"visiting",unescape("visitSendNode%3A%20aNode%0D%0A%09aNode%20receiver%20isSuper%20ifTrue%3A%20%5B%20%5Eself%20visitSendToSuper%3A%20aNode%20%5D.%0D%0A%09%28self%20visitOptimizedSend%3A%20aNode%29%20ifTrue%3A%20%5B%20%5Eself%20%5D.%0D%0A%09%28self%20isOperation%3A%20aNode%29%20ifTrue%3A%20%5B%20%5Eself%20visitOperation%3A%20aNode%20%5D.%0D%0A%09%5Eself%20visitNormalSend%3A%20aNode"));
smalltalk.bind(smalltalk.Compiler,"visitSequenceNode:",0
,function (aNode){var self=this;aNode.temps().do_((function(each){self['@tempVariables'].add_(each);return self['@stream'].nextPutAll_("var "._comma(self.localName_(each))._comma(unescape("%3Dnil%3B")));}));
aNode.nodes().do_separatedBy_((function(each){self.visit_(each);return self['@stream'].nextPutAll_(unescape("%3B"));}), (function(){return self['@stream'].cr();}));return self;}
,"visiting",unescape("visitSequenceNode%3A%20aNode%0D%0A%09aNode%20temps%20do%3A%20%5B%3Aeach%20%7C%0D%0A%09%09tempVariables%20add%3A%20each.%0D%0A%09%09stream%20nextPutAll%3A%20%27var%20%27%2C%20%28self%20localName%3A%20each%29%2C%20%27%3Dnil%3B%27%0D%0A%09%5D.%0D%0A%09aNode%20nodes%20do%3A%20%5B%3Aeach%20%7C%0D%0A%09%09self%20visit%3A%20each.%0D%0A%09%09stream%20nextPutAll%3A%20%27%3B%27%0D%0A%09%5D%20separatedBy%3A%20%5Bstream%20cr%5D"));
smalltalk.bind(smalltalk.Compiler,"visitValueNode:",0
,function (aNode){var self=this;self['@stream'].nextPutAll_(aNode.value().asJavascript());return self;}
,"visiting",unescape("visitValueNode%3A%20aNode%0D%0A%09stream%20nextPutAll%3A%20aNode%20value%20asJavascript"));
smalltalk.bind(smalltalk.Compiler,"visit:",0
,function (aNode){var self=this;return self.visit_doing_(aNode, (function(){return smalltalk.superImplementor(smalltalk.Compiler,'visit_').apply(self, [aNode]);}));;return self;}
,"visiting",unescape("visit%3A%20aNode%0D%0A%09%5Eself%20visit%3A%20aNode%20doing%3A%20%5B%20super%20visit%3A%20aNode%20%5D"));
smalltalk.bind(smalltalk.Compiler,"visit:doing:",0
,function (aNode,aBlock){var $s8Ret$={name:"stReturn"};try{var self=this;var cookie=nil;var result=nil;cookie=self.triggerEvent_with_ifNotHandled_("needsCookie:", aNode, (function(){return (function(){$s8Ret$.result=(function(){return aBlock.evaluate();})();throw($s8Ret$)})();}));
self.triggerEvent_with_("startVisit:", cookie);
result=aBlock.evaluate();
self.triggerEvent_with_("endVisit:", cookie);
(function(){$s8Ret$.result=(function(){return result;})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"visiting",unescape("visit%3A%20aNode%20doing%3A%20aBlock%0D%0A%09%7C%20cookie%20result%20%7C%0D%0A%09cookie%20%3A%3D%20self%0D%0A%09%09triggerEvent%3A%20%23needsCookie%3A%20with%3A%20aNode%0D%0A%09%09ifNotHandled%3A%20%5B%20%5EaBlock%20evaluate%20%5D.%0D%0A%09self%20triggerEvent%3A%20%23startVisit%3A%20with%3A%20cookie.%0D%0A%09result%20%3A%3D%20aBlock%20evaluate.%0D%0A%09self%20triggerEvent%3A%20%23endVisit%3A%20with%3A%20cookie.%0D%0A%09%5Eresult"));
smalltalk.bind(smalltalk.Compiler.$klass,"doIt:",0
,function (smalltalkExpression){var self=this;return self.doIt_to_(smalltalkExpression, nil);;return self;}
,"evaluation",unescape("doIt%3A%20smalltalkExpression%0D%0A%09%22%20Return%20the%20result%20of%20evaluating%20the%20smalltalk%20expression%20in%20the%20global%20context%20or%20a%20description%20of%20an%20error%20situation%20occurred%20evaluating%20the%20code.%20%22%0D%0A%0D%0A%09%5Eself%20doIt%3A%20smalltalkExpression%20to%3A%20nil"));
smalltalk.bind(smalltalk.Compiler.$klass,"doIt:to:",0
,function (smalltalkExpression,aReceiver){var self=this;var result=nil;(function(){return result=(((nil.isNil_(aReceiver))).mustBeBoolean()==true ? (function(){return self.evaluate_(smalltalkExpression);})() : (function(){return self.evaluate_to_(smalltalkExpression, aReceiver);})());}).on_do_(smalltalk.Error, (function(error){((smalltalk.Smalltalk.isObject_(error).not().or_((function(){return error.isString();}))).mustBeBoolean()==true ? (function(){return result=error;})() : (function(){return result=error.$klass.name()._comma(": ")._comma(error.messageText().asString());})());return self.print_(unescape("//%20")._comma(result));}));
return result;;return self;}
,"evaluation",unescape("doIt%3A%20smalltalkExpression%20to%3A%20aReceiver%0D%0A%09%22%20Return%20the%20result%20of%20evaluating%20the%20smalltalk%20expression%20in%20the%20context%20of%20aReceiver%20or%20a%20description%20of%20an%20error%20situation%20occurred%20evaluating%20the%20code.%20%22%0D%0A%0D%0A%09%7C%20result%20%7C%0D%0A%09%5B%20result%20%3A%3D%20aReceiver%20isNil%0D%0A%09%09%09ifTrue%3A%20%20%5B%20self%20evaluate%3A%20smalltalkExpression%20%5D%0D%0A%09%09%09ifFalse%3A%20%5B%20self%20evaluate%3A%20smalltalkExpression%20to%3A%20aReceiver%20%5D%0D%0A%09%5D%20on%3A%20Error%20do%3A%20%5B%3Aerror%7C%0D%0A%09%09%28%28Smalltalk%20isObject%3A%20error%29%20not%20or%3A%20%5B%20error%20isString%20%5D%29%0D%0A%09%09ifTrue%3A%20%5B%20result%20%3A%3D%20error%20%5D%0D%0A%09%09ifFalse%3A%20%5B%20result%20%3A%3D%20error%20class%20name%2C%27%3A%20%27%2C%20error%20messageText%20asString%20%5D.%0D%0A%09%09self%20print%3A%20%27//%20%27%2C%20result%0D%0A%09%5D.%0D%0A%09%5Eresult"));
smalltalk.bind(smalltalk.Compiler.$klass,"evaluate:",0
,function (smalltalkExpression){var self=this;return self.$$new().evaluate_(smalltalkExpression);;return self;}
,"evaluation",unescape("evaluate%3A%20smalltalkExpression%0D%0A%09%22%20Return%20the%20result%20of%20evaluating%20the%20smalltalk%20expression%20in%20a%20global%20context.%20%22%0D%0A%0D%0A%09%5Eself%20new%20evaluate%3A%20smalltalkExpression"));
smalltalk.bind(smalltalk.Compiler.$klass,"smalltalkNameFor:",0
,function (aClass){var $s8Ret$={name:"stReturn"};try{var self=this;(((nil.isNil_(aClass))).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return "undefined";})();throw($s8Ret$)})();})() : nil);
(function(){$s8Ret$.result=(function(){return "smalltalk."._comma(((aClass.isMetaclass()).mustBeBoolean()==true ? (function(){return aClass.instanceClass().name()._comma(".$klass");})() : (function(){return aClass.name();})()));})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"private",unescape("smalltalkNameFor%3A%20aClass%0D%0A%09%22%20Private%20-%20Return%20the%20global%20name%20of%20aClass%20%28can%20be%20nil%29.%20%22%0D%0A%0D%0A%09aClass%20isNil%20ifTrue%3A%20%5B%20%5E%23undefined%20%5D.%0D%0A%09%5E%27smalltalk.%27%2C%20%28aClass%20isMetaclass%0D%0A%09%20%20%20%20ifTrue%3A%20%5B%20aClass%20instanceClass%20name%2C%20%27.%24klass%27%20%5D%0D%0A%09%20%20%20%20ifFalse%3A%20%5B%20aClass%20name%20%5D%29"));
smalltalk.bind(smalltalk.EventManager,"eventTable",0
,function (){var self=this;return (((nil.isNil_(self['@handlers']))).mustBeBoolean()==true ? (function(){return self.eventTableCreate();})() : (function(){return self['@handlers'];})());;return self;}
,"events",unescape("eventTable%0D%0A%09%22%20Private%20-%20Returns%20the%20mapping%20event%20names%20to%20actions%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Ehandlers%20isNil%0D%0A%09%09ifTrue%3A%20%5B%20self%20eventTableCreate%20%5D%0D%0A%09%09ifFalse%3A%20%5B%20handlers%20%5D"));
smalltalk.bind(smalltalk.ExtendedSequenceNode,"accept:",0
,function (aVisitor){var self=this;aVisitor.visitExtendedSequenceNode_(self);return self;}
,"visiting",unescape("accept%3A%20aVisitor%0D%0A%09%22%20Accept%20aVisitor.%20%22%0D%0A%0D%0A%09aVisitor%20visitExtendedSequenceNode%3A%20self"));
smalltalk.bind(smalltalk.ExtendedSequenceNode,"directive",0
,function (){var self=this;return self['@directive'];;return self;}
,"accessing",unescape("directive%0D%0A%09%22%20Return%20the%20directive%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Edirective"));
smalltalk.bind(smalltalk.ExtendedSequenceNode,"directive:",0
,function (aDirective){var self=this;self['@directive']=aDirective;return self;}
,"accessing",unescape("directive%3A%20aDirective%0D%0A%09%22%20Set%20the%20directive%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09directive%20%3A%3D%20aDirective"));
smalltalk.bind(smalltalk.KeyedCollection,"at:",0
,function (aKey){var self=this;return self.at_ifAbsent_(aKey, (function(){return self.objectNotFoundAt_(aKey);}));;return self;}
,"accessing",unescape("at%3A%20aKey%0D%0A%09%22%20Return%20the%20value%20at%20aKey.%0D%0A%09Signal%20an%20error%20if%20the%20key%20is%20not%20present.%0D%0A%09%22%0D%0A%0D%0A%09%5Eself%20at%3A%20aKey%20ifAbsent%3A%20%5B%20self%20objectNotFoundAt%3A%20aKey%20%5D"));
smalltalk.bind(smalltalk.KeyedCollection,"newHash",0
,function (){var self=this;return {};;return self;}
,"private",unescape("newHash%0D%0A%09%22%20Private%20-%20Return%20a%20new%20hash%20object.%20%22%0D%0A%0D%0A%09%5E%7B%27%7B%7D%27%7D"));
smalltalk.bind(smalltalk.MethodNode,"accept:",0
,function (aVisitor){var self=this;aVisitor.visitMethodNode_(self);return self;}
,"visiting",unescape("accept%3A%20aVisitor%0D%0A%09aVisitor%20visitMethodNode%3A%20self"));
smalltalk.bind(smalltalk.MethodNode,"arguments",0
,function (){var self=this;return (((nil.isNil_(self['@arguments']))).mustBeBoolean()==true ? (function(){return [];})() : (function(){return self['@arguments'];})());;return self;}
,"accessing",unescape("arguments%0D%0A%09%5Earguments%20isNil%20ifTrue%3A%20%5B%20%23%28%29%20%5D%20ifFalse%3A%20%5B%20arguments%20%5D"));
smalltalk.bind(smalltalk.MethodNode,"arguments:",0
,function (aCollection){var self=this;self['@arguments']=aCollection;return self;}
,"accessing",unescape("arguments%3A%20aCollection%0D%0A%09arguments%20%3A%3D%20aCollection"));
smalltalk.bind(smalltalk.MethodNode,"selector",0
,function (){var self=this;return self['@selector'];;return self;}
,"accessing",unescape("selector%0D%0A%09%5Eselector"));
smalltalk.bind(smalltalk.MethodNode,"selector:",0
,function (aString){var self=this;self['@selector']=aString;return self;}
,"accessing",unescape("selector%3A%20aString%0D%0A%09selector%20%3A%3D%20aString"));
smalltalk.bind(smalltalk.MethodNode,"source",0
,function (){var self=this;return self['@source'];;return self;}
,"accessing",unescape("source%0D%0A%09%5Esource"));
smalltalk.bind(smalltalk.MethodNode,"source:",0
,function (aString){var self=this;self['@source']=aString;return self;}
,"accessing",unescape("source%3A%20aString%0D%0A%09source%20%3A%3D%20aString"));
smalltalk.bind(smalltalk.Number,"=","_eq"
,function (anObject){var self=this; if (nil.isNil_(anObject)) return false;
if (!(anObject.isNumber)) return false;
if (!(anObject.isNumber())) return false;
if (self == anObject) return true;
return ((0+self-anObject) == 0);
;return self;}
,"comparing",unescape("%3D%20anObject%0D%0A%20%20%20%20%22%20Return%20true%20if%20the%20receiver%20is%20equal%20to%20anObject.%20%22%0D%0A%0D%0A%7B%27%20%20if%20%28nil.isNil_%28anObject%29%29%20return%20false%3B%0D%0A%20%20%20%20if%20%28%21%28anObject.isNumber%29%29%20return%20false%3B%0D%0A%20%20%20%20if%20%28%21%28anObject.isNumber%28%29%29%29%20return%20false%3B%0D%0A%20%20%20%20if%20%28self%20%3D%3D%20anObject%29%20return%20true%3B%0D%0A%20%20%20%20return%20%28%280+self-anObject%29%20%3D%3D%200%29%3B%0D%0A%27%7D"));
smalltalk.bind(smalltalk.Number,">","_gt"
,function (aNumber){var self=this;aNumber.mustBeNumber();
return self > aNumber; ;return self;}
,"comparing",unescape("%3E%20aNumber%0D%0A%09%22%20Return%20true%20if%20the%20receiver%20is%20greater%20to%20aNumber.%20%22%0D%0A%0D%0A%09aNumber%20mustBeNumber.%0D%0A%7B%27%09return%20self%20%3E%20aNumber%3B%20%27%7D"));
smalltalk.bind(smalltalk.Number,">=","_gt_eq"
,function (aNumber){var self=this;aNumber.mustBeNumber();
return self >= aNumber; ;return self;}
,"comparing",unescape("%3E%3D%20aNumber%0D%0A%09%22%20Return%20true%20if%20the%20receiver%20is%20greater%20or%20equal%20to%20aNumber.%20%22%0D%0A%0D%0A%09aNumber%20mustBeNumber.%0D%0A%7B%27%09return%20self%20%3E%3D%20aNumber%3B%20%27%7D"));
smalltalk.bind(smalltalk.Number,"<","_lt"
,function (aNumber){var self=this;aNumber.mustBeNumber();
return self < aNumber; ;return self;}
,"comparing",unescape("%3C%20aNumber%0D%0A%09%22%20Return%20true%20if%20the%20receiver%20is%20smaller%20to%20aNumber.%20%22%0D%0A%0D%0A%09aNumber%20mustBeNumber.%0D%0A%7B%27%09return%20self%20%3C%20aNumber%3B%20%27%7D"));
smalltalk.bind(smalltalk.Number,"-","_minus"
,function (aNumber){var self=this;aNumber.mustBeNumber();
return self - aNumber; ;return self;}
,"arithmetic",unescape("-%20aNumber%0D%0A%09%22%20Return%20the%20result%20of%20operation%20on%20receiver%20and%20aNumber.%20%22%0D%0A%0D%0A%09aNumber%20mustBeNumber.%0D%0A%7B%27%09return%20self%20-%20aNumber%3B%20%27%7D"));
smalltalk.bind(smalltalk.Number,"+","_plus"
,function (aNumber){var self=this;aNumber.mustBeNumber();
return self + aNumber; ;return self;}
,"arithmetic",unescape("+%20aNumber%0D%0A%09%22%20Return%20the%20result%20of%20operation%20on%20receiver%20and%20aNumber.%20%22%0D%0A%0D%0A%09aNumber%20mustBeNumber.%0D%0A%7B%27%09return%20self%20+%20aNumber%3B%20%27%7D"));
smalltalk.bind(smalltalk.Number,"asJavascript",0
,function (){var self=this;return unescape("%28")._comma(self.printString())._comma(unescape("%29"));;return self;}
,"converting",unescape("asJavascript%0D%0A%09%22%20Return%20the%20javascript%20representation%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5E%27%28%27%2C%20self%20printString%2C%20%27%29%27"));
smalltalk.bind(smalltalk.Number,"isNumber",0
,function (){var self=this;return isNaN(self).not();;return self;}
,"testing",unescape("isNumber%0D%0A%09%22%20Return%20true%20if%20the%20receiver%20is%20a%20number.%20%22%0D%0A%0D%0A%09%5E%28%23%20%23isNaN%3A%20self%29%20not"));
smalltalk.bind(smalltalk.Number,"max:",0
,function (aNumber){var self=this;return Math.max(self, aNumber);;return self;}
,"arithmetic",unescape("max%3A%20aNumber%0D%0A%09%22%20Return%20the%20result%20of%20operation%20on%20receiver%20and%20aNumber.%20%22%0D%0A%0D%0A%09%5E%23%7BMath%7D%20%23max%3A%20self%20with%3A%20aNumber"));
smalltalk.bind(smalltalk.Number,"min:",0
,function (aNumber){var self=this;return Math.min(self, aNumber);;return self;}
,"arithmetic",unescape("min%3A%20aNumber%0D%0A%09%22%20Return%20the%20result%20of%20operation%20on%20receiver%20and%20aNumber.%20%22%0D%0A%0D%0A%09%5E%23%7BMath%7D%20%23min%3A%20self%20with%3A%20aNumber"));
smalltalk.bind(smalltalk.Number,"mustBeNumber",0
,function (){var self=this;return self;}
,"testing",unescape("mustBeNumber%0D%0A%09%22%20Signal%20an%20error%20if%20the%20receiver%20is%20not%20a%20Number.%0D%0A%09WARNING%3A%20this%20check%20impose%20a%20severe%20loss%20of%20perfomance%20%28five%20times%20slower%29.%0D%0A%09If%20you%20are%20sure%20the%20operation/compare%20arguments%20are%20ok%20%28a%20number%29%2C%0D%0A%09%20comment%20the%20implementation%20of%20this%20method%20making%20the%20code%20empty.%0D%0A%09%22%0D%0A%0D%0A%09%22%28%23%20%23isNaN%3A%20self%29%20ifTrue%3A%20%5B%20super%20mustBeNumber%20%5D%22"));
smalltalk.bind(smalltalk.Number,"printString",0
,function (){var self=this;return String(self);;return self;}
,"printing",unescape("printString%0D%0A%09%22%20Return%20the%20printable%20representation%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5E%23%20%23String%3A%20self"));
smalltalk.bind(smalltalk.Object,"actionForEvent:",0
,function (anEvent){var self=this;return self.eventTable().at_ifAbsent_(anEvent, (function(){return nil;}));;return self;}
,"events",unescape("actionForEvent%3A%20anEvent%0D%0A%09%22%20Return%20the%20action%20to%20evaluate%20when%20the%20event%20is%20triggered%20by%20the%20receiver%20%28or%20nil%29.%20%22%0D%0A%0D%0A%09%5Eself%20eventTable%20at%3A%20anEvent%20ifAbsent%3A%20%5B%20nil%20%5D"));
smalltalk.bind(smalltalk.Object,"basicPerform:withArguments:",0
,function (jsSelector,anArray){var self=this;return ((function(){var $1$=self[jsSelector];if(nil.isNil_($1$))return ((function(){return self["dnu:withArguments:"];}).value());return $1$;})()).apply(self, anArray);;return self;}
,"private",unescape("basicPerform%3A%20jsSelector%20withArguments%3A%20anArray%0D%0A%09%22%20Private%20-%20Basic%20implementation%20of%20%23perform...%20%22%0D%0A%0D%0A%09%5E%28self%20basicAt%3A%20jsSelector%0D%0A%09%09ifAbsent%3A%20%5B%20self%5B%23dnu%3AwithArguments%3A%5D%20%5D%29%0D%0A%09%09%23apply%3A%20self%20withArguments%3A%20anArray"));
smalltalk.bind(smalltalk.Object,"copy",0
,function (){var self=this;return self.shallowCopy();;return self;}
,"copying",unescape("copy%0D%0A%09%22%20Return%20a%20copy%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%20shallowCopy"));
smalltalk.bind(smalltalk.Object,"evaluate",0
,function (){var self=this;return self;;return self;}
,"evaluating",unescape("evaluate%0D%0A%09%22%20Return%20the%20result%20of%20evaluating%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself"));
smalltalk.bind(smalltalk.Object,"evaluateWithArguments:",0
,function (anArray){var self=this;return self;;return self;}
,"evaluating",unescape("evaluateWithArguments%3A%20anArray%0D%0A%09%22%20Return%20the%20result%20of%20evaluating%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself"));
smalltalk.bind(smalltalk.Object,"eventTableCreate",0
,function (){var self=this;return smalltalk.PoolDictionary.$$new();;return self;}
,"events",unescape("eventTableCreate%0D%0A%09%22%20Private%20-%20Returns%20a%20new%20mapping%20for%20the%20receiver.%20%22%0D%0A%0D%0A%09%5EPoolDictionary%20new"));
smalltalk.bind(smalltalk.Object,"initialize",0
,function (){var self=this;return self;}
,"initialize",unescape("initialize%0D%0A%09%22%20Private%20-%20Initialize%20the%20receiver.%0D%0A%09The%20default%20implementation%20do%20nothing.%0D%0A%09This%20method%20can%20be%20refined%20by%20subclasses%20to%20support%20creation%20time%20initialization%20of%20collaborators.%0D%0A%09%22"));
smalltalk.bind(smalltalk.Object,"isMetaclass",0
,function (){var self=this;return false;;return self;}
,"testing",unescape("isMetaclass%0D%0A%09%22%20Return%20true%20if%20the%20receiver%20is%20a%20metaclass.%20%22%0D%0A%0D%0A%09%5Efalse"));
smalltalk.bind(smalltalk.Object,"isNil",0
,function (){var self=this;return false;;return self;}
,"testing",unescape("isNil%0D%0A%09%22%20Return%20true%20if%20the%20receiver%20is%20nil.%20%22%0D%0A%0D%0A%09%5Efalse"));
smalltalk.bind(smalltalk.Object,"isNumber",0
,function (){var self=this;return false;;return self;}
,"testing",unescape("isNumber%0D%0A%09%22%20Return%20true%20if%20the%20receiver%20is%20a%20Number.%20%22%0D%0A%0D%0A%09%5Efalse"));
smalltalk.bind(smalltalk.Object,"isObject:",0
,function (anObject){var $s8Ret$={name:"stReturn"};try{var self=this;(((nil.isNil_(anObject))).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return (nil.is_eqeq_(anObject,nil));})();throw($s8Ret$)})();})() : nil);
return (anObject.$klass)?true:false; ;return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"testing",unescape("isObject%3A%20anObject%0D%0A%09%22%20Return%20true%20if%20anObject%20is%20a%20smalltalk%20object.%0D%0A%09Return%20false%20if%20the%20object%20is%20foreign%20%28e.g.%20javascript%29%20object.%0D%0A%09%22%0D%0A%0D%0A%09anObject%20isNil%20ifTrue%3A%20%5B%20%5EanObject%20%3D%3D%20nil%20%5D.%0D%0A%7B%27%09return%20%28anObject.%24klass%29%3Ftrue%3Afalse%3B%09%27%7D"));
smalltalk.bind(smalltalk.Object,"isParseFailure",0
,function (){var self=this;return false;;return self;}
,"Compiler-testing",unescape("isParseFailure%0D%0A%09%22%20Return%20true%20if%20the%20receiver%20is%20a%20parsing%20failure.%20%22%0D%0A%0D%0A%09%5Efalse"));
smalltalk.bind(smalltalk.Object,"isString",0
,function (){var self=this;return false;;return self;}
,"testing",unescape("isString%0D%0A%09%22%20Return%20true%20if%20the%20receiver%20is%20a%20String.%20%22%0D%0A%0D%0A%09%5Efalse"));
smalltalk.bind(smalltalk.Object,"methodFor:",0
,function (aSymbol){var self=this;return self.$klass._gt_gt_gt(aSymbol);;return self;}
,"messages",unescape("methodFor%3A%20aSymbol%20%0D%0A%09%22%20Return%20the%20method%20implementing%20aSymbol%20%28or%20nil%29.%20%22%0D%0A%0D%0A%09%5Eself%20class%20%3E%3E%3E%20aSymbol"));
smalltalk.bind(smalltalk.Object,"perform:",0
,function (aSymbol){var self=this;return self.perform_withArguments_(aSymbol, []);;return self;}
,"perform",unescape("perform%3A%20aSymbol%0D%0A%09%22%20Return%20the%20result%20of%20sending%20message%20aSymbol%20to%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%20perform%3A%20aSymbol%20withArguments%3A%20%23%28%29"));
smalltalk.bind(smalltalk.Object,"perform:withArguments:",0
,function (aSymbol,aCollection){var self=this;((aCollection.isArray()).mustBeBoolean()==true ? nil : (function(){return self.error_(unescape("//%20Invalid%20arguments%20in%20%23perform%3AwithArguments%3A%20%28%23")._comma(aSymbol)._comma(unescape("%29%20%28must%20be%20anArray%29.")));})());
return self.basicPerform_withArguments_(aSymbol.asSelector(), aCollection);;return self;}
,"perform",unescape("perform%3A%20aSymbol%20withArguments%3A%20aCollection%0D%0A%09%22%20Return%20the%20result%20of%20sending%20message%20aSymbol%20to%20the%20receiver.%20%22%0D%0A%0D%0A%09aCollection%20isArray%20ifFalse%3A%20%5B%20self%20error%3A%20%27//%20Invalid%20arguments%20in%20%23perform%3AwithArguments%3A%20%28%23%27%2CaSymbol%2C%27%29%20%28must%20be%20anArray%29.%27%20%5D.%0D%0A%09%5Eself%20basicPerform%3A%20aSymbol%20asSelector%20withArguments%3A%20aCollection"));
smalltalk.bind(smalltalk.Object,"respondsTo:",0
,function (aSymbol){var self=this;return (nil.isNil_(self.methodFor_(aSymbol))===false);;return self;}
,"messages",unescape("respondsTo%3A%20aSymbol%20%0D%0A%09%22%20Return%20true%20if%20the%20receiver%20respond%20to%20message%20aSymbol.%20%22%0D%0A%0D%0A%09%5E%28self%20methodFor%3A%20aSymbol%29%20notNil"));
smalltalk.bind(smalltalk.Object,"smalltalk",0
,function (){var self=this;return smalltalk;;return self;}
,"system",unescape("smalltalk%0D%0A%09%22%20Return%20the%20smalltalk%20system%20containing%20the%20receiver.%20%22%0D%0A%0D%0A%09%20%5E%23%7Bsmalltalk%7D"));
smalltalk.bind(smalltalk.Object,"triggerEvent:",0
,function (anEvent){var self=this;return self.actionForEvent_(anEvent).evaluate();;return self;}
,"events",unescape("triggerEvent%3A%20anEvent%0D%0A%09%22%20Return%20the%20result%20of%20triggering%20the%20event.%20%22%0D%0A%0D%0A%09%5E%28self%20actionForEvent%3A%20anEvent%29%20evaluate"));
smalltalk.bind(smalltalk.Object,"triggerEvent:ifNotHandled:",0
,function (anEvent,aBlock){var self=this;return self.eventTable().at_ifAbsent_(anEvent, (function(){return aBlock;})).evaluate();;return self;}
,"events",unescape("triggerEvent%3A%20anEvent%20ifNotHandled%3A%20aBlock%0D%0A%09%22%20Trigger%20the%20event.%0D%0A%09If%20the%20event%20is%20not%20handled%2C%20return%20the%20value%20of%20evaluating%20aBlock%2C%0D%0A%20%20%20%20%20%20%20%20or%20the%20value%20returned%20by%20the%20most%20recently%20defined%20event%20handler.%0D%0A%09%22%0D%0A%0D%0A%09%5E%28self%20eventTable%20at%3A%20anEvent%20ifAbsent%3A%20%5B%20aBlock%20%5D%29%20evaluate"));
smalltalk.bind(smalltalk.Object,"triggerEvent:withArguments:",0
,function (anEvent,array){var self=this;return self.actionForEvent_(anEvent).evaluateWithArguments_(array);;return self;}
,"events",unescape("triggerEvent%3A%20anEvent%20withArguments%3A%20array%0D%0A%09%22%20Return%20the%20result%20of%20triggering%20the%20event.%20%22%0D%0A%0D%0A%09%5E%28self%20actionForEvent%3A%20anEvent%29%20evaluateWithArguments%3A%20array"));
smalltalk.bind(smalltalk.Object,"triggerEvent:withArguments:ifNotHandled:",0
,function (anEvent,array,aBlock){var self=this;return self.eventTable().at_ifAbsent_(anEvent, (function(){return aBlock;})).evaluateWithArguments_(array);;return self;}
,"events",unescape("triggerEvent%3A%20anEvent%20withArguments%3A%20array%20ifNotHandled%3A%20aBlock%0D%0A%09%22%20Return%20the%20result%20of%20triggering%20the%20eventwith%20the%20arguments.%0D%0A%09If%20the%20event%20is%20not%20handled%2C%20return%20the%20value%20of%20evaluating%20aBlock%2C%0D%0A%09or%20the%20value%20returned%20by%20the%20most%20recently%20defined%20event%20handler%20action.%0D%0A%09%22%0D%0A%0D%0A%09%5E%28self%20eventTable%20at%3A%20anEvent%20ifAbsent%3A%20%5B%20aBlock%20%5D%29%20evaluateWithArguments%3A%20array"));
smalltalk.bind(smalltalk.Object,"triggerEvent:with:",0
,function (anEvent,anObject){var self=this;return self.triggerEvent_withArguments_(anEvent, smalltalk.Array.with_(anObject));;return self;}
,"events",unescape("triggerEvent%3A%20anEvent%20with%3A%20anObject%0D%0A%09%22%20Return%20the%20result%20of%20triggering%20the%20event.%20%22%0D%0A%0D%0A%09%5Eself%20triggerEvent%3A%20anEvent%20withArguments%3A%20%28Array%20with%3A%20anObject%29"));
smalltalk.bind(smalltalk.Object,"triggerEvent:with:ifNotHandled:",0
,function (anEvent,anObject,aBlock){var self=this;return self.triggerEvent_withArguments_ifNotHandled_(anEvent, smalltalk.Array.with_(anObject), aBlock);;return self;}
,"events",unescape("triggerEvent%3A%20anEvent%20with%3A%20anObject%20ifNotHandled%3A%20aBlock%0D%0A%09%22%20Return%20the%20result%20of%20triggering%20the%20eventwith.%20%22%0D%0A%0D%0A%09%5Eself%20triggerEvent%3A%20anEvent%20withArguments%3A%20%28Array%20with%3A%20anObject%29%20ifNotHandled%3A%20aBlock"));
smalltalk.bind(smalltalk.Object,"triggerEvent:with:with:",0
,function (anEvent,anObject,anotherObject){var self=this;return self.triggerEvent_withArguments_(anEvent, smalltalk.Array.with_with_(anObject, anotherObject));;return self;}
,"events",unescape("triggerEvent%3A%20anEvent%20with%3A%20anObject%20with%3A%20anotherObject%0D%0A%09%22%20Return%20the%20result%20of%20triggering%20the%20event.%20%22%0D%0A%0D%0A%09%5Eself%20triggerEvent%3A%20anEvent%20withArguments%3A%20%28Array%20with%3A%20anObject%20with%3A%20anotherObject%29"));
smalltalk.bind(smalltalk.Object,"yourself",0
,function (){var self=this;return self;;return self;}
,"identity",unescape("yourself%0D%0A%09%22%20Return%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself"));
smalltalk.bind(smalltalk.PPActionParser,"block",0
,function (){var self=this;return self['@block'];;return self;}
,"accessing",unescape("block%0D%0A%09%22%20Return%20the%20block%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eblock"));
smalltalk.bind(smalltalk.PPActionParser,"block:",0
,function (aBlock){var self=this;self['@block']=aBlock;return self;}
,"accessing",unescape("block%3A%20aBlock%0D%0A%09%22%20Set%20the%20block%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09block%20%3A%3D%20aBlock"));
smalltalk.bind(smalltalk.PPActionParser,"parse:",0
,function (aStream){var $s8Ret$={name:"stReturn"};try{var self=this;var element=nil;element=self.parser().memoizedParse_(aStream);
((element.isParseFailure()).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return element;})();throw($s8Ret$)})();})() : nil);
(function(){$s8Ret$.result=(function(){return self.block().value_(element);})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"parsing",unescape("parse%3A%20aStream%0D%0A%09%22%20Parse%20contents%20in%20aStream.%20%22%0D%0A%0D%0A%09%7C%20element%20%7C%0D%0A%09element%20%3A%3D%20self%20parser%20memoizedParse%3A%20aStream.%0D%0A%09element%20isParseFailure%20ifTrue%3A%20%5B%20%5Eelement%20%5D.%0D%0A%09%5Eself%20block%20value%3A%20element"));
smalltalk.bind(smalltalk.PPActionParser.$klass,"on:block:",0
,function (aParser,aBlock){var self=this;return (function($rec){$rec.parser_(aParser);$rec.block_(aBlock);return $rec.yourself();})(self.$$new());;return self;}
,"instantiation",unescape("on%3A%20aParser%20block%3A%20aBlock%0D%0A%09%22%20Return%20an%20instance%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%20new%0D%0A%09%09parser%3A%20aParser%3B%0D%0A%09%09block%3A%20aBlock%3B%0D%0A%09%09yourself"));
smalltalk.bind(smalltalk.PPAndParser,"basicParse:",0
,function (aStream){var self=this;var element=nil;var position=nil;position=aStream.position();
element=self.parser().memoizedParse_(aStream);
aStream.position_(position);
return element;;return self;}
,"parsing",unescape("basicParse%3A%20aStream%0D%0A%09%22%20Parse%20contents%20in%20aStream.%20%22%0D%0A%0D%0A%09%7C%20element%20position%20%7C%0D%0A%09position%20%3A%3D%20aStream%20position.%0D%0A%09element%20%3A%3D%20self%20parser%20memoizedParse%3A%20aStream.%0D%0A%09aStream%20position%3A%20position.%0D%0A%09%5Eelement"));
smalltalk.bind(smalltalk.PPCharacterParser,"match:",0
,function (aString){var self=this;return aString.match_(self['@regexp']);;return self;}
,"private",unescape("match%3A%20aString%0D%0A%09%22%20Match%20the%20receiver%20to%20string.%20%22%0D%0A%0D%0A%09%5EaString%20match%3A%20regexp"));
smalltalk.bind(smalltalk.PPCharacterParser,"parse:",0
,function (aStream){var $s8Ret$={name:"stReturn"};try{var self=this;(((nil.isNil_(aStream.peek())===false).and_((function(){return self.match_(aStream.peek());}))).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return aStream.next();})();throw($s8Ret$)})();})() : nil);
(function(){$s8Ret$.result=(function(){return smalltalk.PPFailure.reason_at_("Could not match", aStream.position());})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"parsing",unescape("parse%3A%20aStream%0D%0A%09%22%20Parse%20contents%20in%20aStream.%20%22%0D%0A%0D%0A%09%28aStream%20peek%20notNil%0D%0A%09and%3A%20%5B%20self%20match%3A%20aStream%20peek%20%5D%29%0D%0A%09ifTrue%3A%20%5B%20%5EaStream%20next%20%5D.%0D%0A%0D%0A%09%5EPPFailure%20reason%3A%20%27Could%20not%20match%27%20at%3A%20aStream%20position"));
smalltalk.bind(smalltalk.PPCharacterParser,"string:",0
,function (aString){var self=this;self['@regexp']=smalltalk.RegularExpression.fromString_(unescape("%5B")._comma(aString)._comma(unescape("%5D")));return self;}
,"accessing",unescape("string%3A%20aString%0D%0A%09%22%20Set%20the%20string%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09regexp%20%3A%3D%20RegularExpression%20fromString%3A%20%27%5B%27%2C%20aString%2C%20%27%5D%27"));
smalltalk.bind(smalltalk.PPChoiceParser,"/","_slash"
,function (aRule){var self=this;return self.copyWith_(aRule);;return self;}
,"copying",unescape("/%20aRule%0D%0A%09%22%20Return%20the%20receiver%20composed%20with%20aRule.%20%22%0D%0A%0D%0A%09%5Eself%20copyWith%3A%20aRule"));
smalltalk.bind(smalltalk.PPChoiceParser,"parse:",0
,function (aStream){var self=this;var result=nil;self.parsers().detect_ifNone_((function(each){result=each.memoizedParse_(aStream);return result.isParseFailure().not();}), (function(){return nil;}));
return result;;return self;}
,"parsing",unescape("parse%3A%20aStream%0D%0A%09%22%20Parse%20contents%20in%20aStream.%20%22%0D%0A%0D%0A%09%7C%20result%20%7C%0D%0A%09self%20parsers%20detect%3A%20%5B%3Aeach%20%7C%0D%0A%09%09result%20%3A%3D%20each%20memoizedParse%3A%20aStream.%0D%0A%09%09result%20isParseFailure%20not%0D%0A%09%5D%20ifNone%3A%20%5B%5D.%0D%0A%09%5Eresult"));
smalltalk.bind(smalltalk.PPDelegateParser,"parse:",0
,function (aStream){var self=this;return self.parser().memoizedParse_(aStream);;return self;}
,"parsing",unescape("parse%3A%20aStream%0D%0A%09%22%20Parse%20contents%20in%20aStream.%20%22%0D%0A%0D%0A%09%5Eself%20parser%20memoizedParse%3A%20aStream"));
smalltalk.bind(smalltalk.PPDelegateParser,"parser",0
,function (){var self=this;return self['@parser'];;return self;}
,"accessing",unescape("parser%0D%0A%09%22%20Return%20the%20parser%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eparser"));
smalltalk.bind(smalltalk.PPDelegateParser,"parser:",0
,function (aParser){var self=this;self['@parser']=aParser;return self;}
,"accessing",unescape("parser%3A%20aParser%0D%0A%09%22%20Set%20the%20parser%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09parser%20%3A%3D%20aParser"));
smalltalk.bind(smalltalk.PPDelegateParser.$klass,"on:",0
,function (aParser){var self=this;return (function($rec){$rec.parser_(aParser);return $rec.yourself();})(self.$$new());;return self;}
,"instantiation",unescape("on%3A%20aParser%0D%0A%09%22%20Return%20an%20instance%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%20%20%20%20%5Eself%20new%0D%0A%09%09parser%3A%20aParser%3B%0D%0A%09%09yourself"));
smalltalk.bind(smalltalk.PPEOFParser,"parse:",0
,function (aStream){var $s8Ret$={name:"stReturn"};try{var self=this;((aStream.atEnd()).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return nil;})();throw($s8Ret$)})();})() : nil);
(function(){$s8Ret$.result=(function(){return smalltalk.PPFailure.reason_at_("EOF expected", aStream.position());})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"parsing",unescape("parse%3A%20aStream%0D%0A%09%22%20Parse%20contents%20in%20aStream.%20%22%0D%0A%0D%0A%09aStream%20atEnd%20ifTrue%3A%20%5B%20%5Enil%20%5D%20.%0D%0A%09%5EPPFailure%20reason%3A%20%27EOF%20expected%27%20at%3A%20aStream%20position"));
smalltalk.bind(smalltalk.PPEpsilonParser,"parse:",0
,function (aStream){var self=this;return nil;;return self;}
,"parsing",unescape("parse%3A%20aStream%0D%0A%09%22%20Parse%20contents%20in%20aStream.%20%22%0D%0A%0D%0A%09%5Enil"));
smalltalk.bind(smalltalk.PPFailure,"isParseFailure",0
,function (){var self=this;return true;;return self;}
,"testing",unescape("isParseFailure%0D%0A%09%22%20Return%20true%20if%20the%20receiver%20is%20a%20parse%20failure.%20%22%0D%0A%0D%0A%09%5Etrue"));
smalltalk.bind(smalltalk.PPFailure,"position:",0
,function (aNumber){var self=this;self['@position']=aNumber;return self;}
,"accessing",unescape("position%3A%20aNumber%0D%0A%09%22%20Set%20the%20position%20of%20the%20rceiver.%20%22%0D%0A%0D%0A%09position%20%3A%3D%20aNumber"));
smalltalk.bind(smalltalk.PPFailure,"reason:",0
,function (aString){var self=this;self['@reason']=aString;return self;}
,"accessing",unescape("reason%3A%20aString%0D%0A%09%22%20Set%20the%20reason%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09reason%20%3A%3D%20aString"));
smalltalk.bind(smalltalk.PPFailure,"reason:at:",0
,function (aString,anInteger){var self=this;(function($rec){$rec.reason_(aString);return $rec.position_(anInteger);})(self);return self;}
,"accessing",unescape("reason%3A%20aString%20at%3A%20anInteger%0D%0A%09%22%20Set%20the%20reason%20and%20position%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09self%0D%0A%09%09reason%3A%20aString%3B%20%0D%0A%09%09position%3A%20anInteger"));
smalltalk.bind(smalltalk.PPFailure.$klass,"reason:at:",0
,function (aString,anInteger){var self=this;return self.$$new().reason_at_(aString, anInteger);;return self;}
,"instantiation",unescape("reason%3A%20aString%20at%3A%20anInteger%0D%0A%09%22%20Return%20an%20instance%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%20new%20reason%3A%20aString%20at%3A%20anInteger"));
smalltalk.bind(smalltalk.PPFlattenParser,"parse:",0
,function (aStream){var $s8Ret$={name:"stReturn"};try{var self=this;var start=nil;var element=nil;start=aStream.position();
element=self.parser().memoizedParse_(aStream);
((element.isParseFailure()).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return element;})();throw($s8Ret$)})();})() : nil);
(function(){$s8Ret$.result=(function(){return aStream.collection().copyFrom_to_(start._plus((1)), aStream.position());})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"parsing",unescape("parse%3A%20aStream%0D%0A%09%22%20Parse%20contents%20in%20aStream.%20%22%0D%0A%0D%0A%09%7C%20start%20element%20%7C%0D%0A%09start%20%3A%3D%20aStream%20position.%0D%0A%09element%20%3A%3D%20self%20parser%20memoizedParse%3A%20aStream.%0D%0A%09element%20isParseFailure%20ifTrue%3A%20%5B%20%5Eelement%20%5D.%0D%0A%09%5EaStream%20collection%20%0D%0A%09%09copyFrom%3A%20start%20+%201%20%0D%0A%09%09to%3A%20aStream%20position"));
smalltalk.bind(smalltalk.PPInlineParser,"terminator:",0
,function (aString){var self=this;self['@terminator']=aString;return self;}
,"accessing",unescape("terminator%3A%20aString%0D%0A%09%22%20Set%20terminator%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09terminator%20%3A%3D%20aString"));
smalltalk.bind(smalltalk.PPInlineParser.$klass,"upTo:",0
,function (aString){var self=this;return (function($rec){$rec.terminator_(aString);return $rec.yourself();})(self.$$new());;return self;}
,"instantiation",unescape("upTo%3A%20aString%0D%0A%09%22%20Return%20an%20instance%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%20new%20terminator%3A%20aString%3B%20yourself"));
smalltalk.bind(smalltalk.PPListParser,"copyWith:",0
,function (aParser){var self=this;return self.$klass.withAll_(self.parsers().copyWith_(aParser));;return self;}
,"copying",unescape("copyWith%3A%20aParser%0D%0A%09%22%20Return%20a%20copy%20of%20the%20receiver%20with%20aParser.%20%22%0D%0A%0D%0A%09%5Eself%20class%20withAll%3A%20%28self%20parsers%20copyWith%3A%20aParser%29"));
smalltalk.bind(smalltalk.PPListParser,"parsers",0
,function (){var $s8Ret$={name:"stReturn"};try{var self=this;(((nil.isNil_(self['@parsers']))).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return [];})();throw($s8Ret$)})();})() : nil);
(function(){$s8Ret$.result=(function(){return self['@parsers'];})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"accessing",unescape("parsers%0D%0A%09%22%20Return%20the%20parsers%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09parsers%20isNil%20ifTrue%3A%20%5B%20%5E%23%28%29%20%5D.%0D%0A%09%5Eparsers"));
smalltalk.bind(smalltalk.PPListParser,"parsers:",0
,function (aCollection){var self=this;self['@parsers']=aCollection.collect_((function(each){return each.asParser();}));return self;}
,"accessing",unescape("parsers%3A%20aCollection%0D%0A%09%22%20Set%20the%20parsers%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09parsers%20%3A%3D%20aCollection%20collect%3A%20%5B%3Aeach%7C%20each%20asParser%20%5D"));
smalltalk.bind(smalltalk.PPListParser.$klass,"withAll:",0
,function (aCollection){var self=this;return (function($rec){$rec.parsers_(aCollection);return $rec.yourself();})(self.basicNew());;return self;}
,"instantiation",unescape("withAll%3A%20aCollection%0D%0A%09%22%20Return%20an%20instance%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%20%20%20%20%5Eself%20basicNew%0D%0A%09%09parsers%3A%20aCollection%3B%0D%0A%09%09yourself"));
smalltalk.bind(smalltalk.PPListParser.$klass,"with:with:",0
,function (aParser,anotherParser){var self=this;return self.withAll_(smalltalk.Array.with_with_(aParser, anotherParser));;return self;}
,"instantiation",unescape("with%3A%20aParser%20with%3A%20anotherParser%0D%0A%09%22%20Return%20an%20instance%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%20withAll%3A%20%28Array%20with%3A%20aParser%20with%3A%20anotherParser%29"));
smalltalk.bind(smalltalk.PPNotParser,"parse:",0
,function (aStream){var $s8Ret$={name:"stReturn"};try{var self=this;var element=nil;element=self.basicParse_(aStream);
((element.isParseFailure()).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return nil;})();throw($s8Ret$)})();})() : nil);
(function(){$s8Ret$.result=(function(){return smalltalk.PPFailure.reason_at_(element, aStream.position());})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"parsing",unescape("parse%3A%20aStream%0D%0A%09%22%20Parse%20contents%20in%20aStream.%20%22%0D%0A%0D%0A%09%7C%20element%20%7C%0D%0A%09element%20%3A%3D%20self%20basicParse%3A%20aStream.%0D%0A%09element%20isParseFailure%20ifTrue%3A%20%5B%20%5Enil%20%5D.%0D%0A%09%5EPPFailure%20reason%3A%20element%20at%3A%20aStream%20position"));
smalltalk.bind(smalltalk.PPParser,",","_comma"
,function (aParser){var self=this;return smalltalk.PPSequenceParser.with_with_(self, aParser);;return self;}
,"operations",unescape("%2C%20aParser%0D%0A%09%22%20Return%20a%20composed%20version%20of%20the%20receiver%20and%20aParser.%20%22%0D%0A%0D%0A%09%5EPPSequenceParser%20with%3A%20self%20with%3A%20aParser"));
smalltalk.bind(smalltalk.PPParser,"==>","_eq_eq_gt"
,function (aBlock){var self=this;return smalltalk.PPActionParser.on_block_(self, aBlock);;return self;}
,"operations",unescape("%3D%3D%3E%20aBlock%0D%0A%09%22%20Return%20an%20action%20parser%20on%20the%20receiver.%20%22%0D%0A%0D%0A%09%5EPPActionParser%20on%3A%20self%20block%3A%20aBlock"));
smalltalk.bind(smalltalk.PPParser,"/","_slash"
,function (aParser){var self=this;return smalltalk.PPChoiceParser.with_with_(self, aParser);;return self;}
,"operations",unescape("/%20aParser%0D%0A%09%22%20Return%20a%20choice%20composite%20version%20of%20the%20receiver%20and%20aParser.%20%22%0D%0A%0D%0A%09%5EPPChoiceParser%20with%3A%20self%20with%3A%20aParser"));
smalltalk.bind(smalltalk.PPParser,"asParser",0
,function (){var self=this;return self;;return self;}
,"converting",unescape("asParser%0D%0A%09%22%20Return%20a%20parser%20on%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself"));
smalltalk.bind(smalltalk.PPParser,"flatten",0
,function (){var self=this;return smalltalk.PPFlattenParser.on_(self);;return self;}
,"operations",unescape("flatten%0D%0A%09%22%20Return%20a%20flattened%20version%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5EPPFlattenParser%20on%3A%20self"));
smalltalk.bind(smalltalk.PPParser,"memo",0
,function (){var self=this;(((nil.isNil_(self['@memo']))).mustBeBoolean()==true ? (function(){return self['@memo']=[];})() : nil);
return self['@memo'];;return self;}
,"accessing",unescape("memo%0D%0A%09%22%20Return%20the%20memoized%20information.%20%22%0D%0A%0D%0A%09memo%20isNil%20ifTrue%3A%20%5B%20memo%20%3A%3D%20%23%28%29%20%5D.%0D%0A%09%5Ememo"));
smalltalk.bind(smalltalk.PPParser,"memoizedParse:",0
,function (aStream){var $s8Ret$={name:"stReturn"};try{var self=this;var start=nil;var value=nil;start=aStream.position();
value=self.memo().at_ifAbsent_(start, (function(){var end=nil;var node=nil;node=self.parse_(aStream);end=aStream.position();self.set_start_end_(node, start, end);self.memo().at_put_(start, smalltalk.Array.with_with_(node, end));return (function(){$s8Ret$.result=(function(){return node;})();throw($s8Ret$)})();}));
aStream.position_(value.second());
(function(){$s8Ret$.result=(function(){return value.first();})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"operations",unescape("memoizedParse%3A%20aStream%0D%0A%09%22%20Private%20-%20Evaluate%20the%20receiver.%20%22%0D%0A%0D%0A%09%7C%20start%20value%20%7C%0D%0A%09start%20%3A%3D%20aStream%20position.%0D%0A%09value%20%3A%3D%20self%20memo%20at%3A%20start%20ifAbsent%3A%20%5B%20%7C%20end%20node%20%7C%0D%0A%09%09node%20%3A%3D%20self%20parse%3A%20aStream.%0D%0A%09%09end%20%3A%3D%20aStream%20position.%0D%0A%09%09self%20set%3A%20node%20start%3A%20start%20end%3A%20end.%0D%0A%09%09self%20memo%20at%3A%20start%20put%3A%20%28Array%20with%3A%20node%20with%3A%20end%29.%0D%0A%09%09%5Enode%0D%0A%09%5D.%0D%0A%09aStream%20position%3A%20value%20second.%0D%0A%09%5Evalue%20first"));
smalltalk.bind(smalltalk.PPParser,"not",0
,function (){var self=this;return smalltalk.PPNotParser.on_(self);;return self;}
,"operations",unescape("not%0D%0A%09%22%20Return%20the%20negation%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5EPPNotParser%20on%3A%20self"));
smalltalk.bind(smalltalk.PPParser,"optional",0
,function (){var self=this;return self._slash(smalltalk.PPEpsilonParser.$$new());;return self;}
,"operations",unescape("optional%0D%0A%09%22%20Return%20an%20optional%20version%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%20/%20PPEpsilonParser%20new"));
smalltalk.bind(smalltalk.PPParser,"plus",0
,function (){var self=this;return smalltalk.PPRepeatingParser.on_min_(self, (1));;return self;}
,"operations",unescape("plus%0D%0A%09%22%20Return%20an%20iterative%20version%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5EPPRepeatingParser%20on%3A%20self%20min%3A%201"));
smalltalk.bind(smalltalk.PPParser,"set:start:end:",0
,function (anElement,start,end){var self=this;((smalltalk.responds_to_(anElement,("start:end:"))).mustBeBoolean()==true ? (function(){return anElement.start_end_(start, end);})() : nil);return self;}
,"private",unescape("set%3A%20anElement%20start%3A%20start%20end%3A%20end%0D%0A%09%22%20Private%20-%20Set%20start%26end%20source%20offest%20of%20anElement.%20%22%0D%0A%0D%0A%09%28anElement%20respondsTo%3A%20%23start%3Aend%3A%29%20ifTrue%3A%20%5B%0D%0A%09%09anElement%20start%3A%20start%20end%3A%20end%0D%0A%09%5D"));
smalltalk.bind(smalltalk.PPParser,"star",0
,function (){var self=this;return smalltalk.PPRepeatingParser.on_min_(self, (0));;return self;}
,"operations",unescape("star%0D%0A%09%22%20Return%20an%20iterative%20version%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5EPPRepeatingParser%20on%3A%20self%20min%3A%200"));
smalltalk.bind(smalltalk.PPParser,"withSource",0
,function (){var self=this;return smalltalk.PPSourceParser.on_(self);;return self;}
,"operations",unescape("withSource%0D%0A%09%22%20Return%20a%20source%20parser%20on%20the%20receiver.%20%22%0D%0A%0D%0A%09%5EPPSourceParser%20on%3A%20self"));
smalltalk.bind(smalltalk.PPRepeatingParser,"min",0
,function (){var self=this;return self['@min'];;return self;}
,"accessing",unescape("min%0D%0A%09%22%20Return%20the%20min%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Emin"));
smalltalk.bind(smalltalk.PPRepeatingParser,"min:",0
,function (aNumber){var self=this;self['@min']=aNumber;return self;}
,"accessing",unescape("min%3A%20aNumber%0D%0A%09%22%20Set%20the%20min%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09min%20%3A%3D%20aNumber"));
smalltalk.bind(smalltalk.PPRepeatingParser,"parse:",0
,function (aStream){var $s8Ret$={name:"stReturn"};try{var self=this;var start=nil;var element=nil;var result=nil;var failure=nil;start=aStream.position();
result=smalltalk.Array.$$new();
(function(){while((function(){return result.size()._lt(self.min()).and_((function(){return (nil.isNil_(failure));}));})()){(function(){element=self.parser().memoizedParse_(aStream);return ((element.isParseFailure()).mustBeBoolean()==true ? (function(){aStream.position_(start);return failure=element;})() : (function(){return result.addLast_(element);})());})()};return nil})();
(((nil.isNil_(failure)===false)).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return failure;})();throw($s8Ret$)})();})() : nil);
(function(){while((function(){return (nil.isNil_(failure));})()){(function(){element=self.parser().memoizedParse_(aStream);return ((element.isParseFailure()).mustBeBoolean()==true ? (function(){return failure=element;})() : (function(){return result.addLast_(element);})());})()};return nil})();
(function(){$s8Ret$.result=(function(){return result;})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"parsing",unescape("parse%3A%20aStream%0D%0A%09%22%20Parse%20contents%20in%20aStream.%20%22%0D%0A%0D%0A%09%7C%20start%20element%20result%20failure%20%7C%0D%0A%09start%20%3A%3D%20aStream%20position.%0D%0A%09result%20%3A%3D%20Array%20new.%0D%0A%09%5B%20%28result%20size%20%3C%20self%20min%29%20and%3A%20%5B%20failure%20isNil%20%5D%0D%0A%09%5D%20whileTrue%3A%20%5B%0D%0A%09%20%20%20%20element%20%3A%3D%20self%20parser%20memoizedParse%3A%20aStream.%0D%0A%09%20%20%20%20element%20isParseFailure%0D%0A%09%09ifFalse%3A%20%5B%20result%20addLast%3A%20element%20%5D%0D%0A%09%09ifTrue%3A%20%5B%20aStream%20position%3A%20start.%0D%0A%09%09%09%20%20failure%20%3A%3D%20element%20%5D%0D%0A%09%5D.%0D%0A%09failure%20notNil%20ifTrue%3A%20%5B%20%5Efailure%20%5D.%0D%0A%09%5Bfailure%20isNil%5D%20whileTrue%3A%20%5B%0D%0A%09%09element%20%3A%3D%20self%20parser%20memoizedParse%3A%20aStream.%0D%0A%09%20%09element%20isParseFailure%0D%0A%09%09%09ifTrue%3A%20%5B%20failure%20%3A%3D%20element%20%5D%0D%0A%09%09%09ifFalse%3A%20%5B%20result%20addLast%3A%20element%20%5D%0D%0A%09%5D.%0D%0A%09%5Eresult"));
smalltalk.bind(smalltalk.PPRepeatingParser.$klass,"on:min:",0
,function (aParser,aNumber){var self=this;return (function($rec){$rec.parser_(aParser);$rec.min_(aNumber);return $rec.yourself();})(self.$$new());;return self;}
,"instantiation",unescape("on%3A%20aParser%20min%3A%20aNumber%0D%0A%09%22%20Return%20an%20instance%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%20new%0D%0A%09%09parser%3A%20aParser%3B%0D%0A%09%09min%3A%20aNumber%3B%0D%0A%09%09yourself"));
smalltalk.bind(smalltalk.PPSequenceParser,",","_comma"
,function (aRule){var self=this;return self.copyWith_(aRule);;return self;}
,"copying",unescape("%2C%20aRule%0D%0A%09%22%20Return%20a%20copy%20of%20the%20receiver%20with%20aRule.%20%22%0D%0A%0D%0A%09%5Eself%20copyWith%3A%20aRule"));
smalltalk.bind(smalltalk.PPSequenceParser,"parse:",0
,function (aStream){var $s8Ret$={name:"stReturn"};try{var self=this;var start=nil;var result=nil;var element=nil;result=[];
start=aStream.position();
self.parsers().do_((function(each){element=each.memoizedParse_(aStream);result.add_(element);return ((element.isParseFailure()).mustBeBoolean()==true ? (function(){aStream.position_(start);return (function(){$s8Ret$.result=(function(){return element;})();throw($s8Ret$)})();})() : nil);}));
(function(){$s8Ret$.result=(function(){return result;})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"parsing",unescape("parse%3A%20aStream%0D%0A%09%22%20Parse%20contents%20in%20aStream.%20%22%0D%0A%0D%0A%09%7C%20start%20result%20element%20%7C%0D%0A%09result%20%3A%3D%20%23%28%29.%0D%0A%09start%20%3A%3D%20aStream%20position.%0D%0A%09self%20parsers%20do%3A%20%5B%3Aeach%20%7C%0D%0A%09%09element%20%3A%3D%20each%20memoizedParse%3A%20aStream.%0D%0A%09%09result%20add%3A%20element.%0D%0A%09%09element%20isParseFailure%20ifTrue%3A%20%5B%0D%0A%09%09%09aStream%20position%3A%20start.%0D%0A%09%09%09%5Eelement%0D%0A%09%09%5D%0D%0A%09%5D.%0D%0A%09%5Eresult"));
smalltalk.bind(smalltalk.PPSourceParser,"parse:",0
,function (aStream){var $s8Ret$={name:"stReturn"};try{var self=this;var start=nil;var element=nil;var result=nil;start=aStream.position();
element=self.parser().memoizedParse_(aStream);
((element.isParseFailure()).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return element;})();throw($s8Ret$)})();})() : nil);
result=aStream.collection().copyFrom_to_(start._plus((1)), aStream.position());
(function(){$s8Ret$.result=(function(){return smalltalk.Array.with_with_(element, result);})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"parsing",unescape("parse%3A%20aStream%0D%0A%09%22%20Parse%20contents%20in%20aStream.%20%22%0D%0A%0D%0A%09%7C%20start%20element%20result%20%7C%0D%0A%09start%20%3A%3D%20aStream%20position.%0D%0A%09element%20%3A%3D%20self%20parser%20memoizedParse%3A%20aStream.%0D%0A%09element%20isParseFailure%20ifTrue%3A%20%5B%20%5Eelement%20%5D.%0D%0A%09result%20%3A%3D%20aStream%20collection%0D%0A%09%09copyFrom%3A%20start%20+%201%0D%0A%09%09to%3A%20aStream%20position.%0D%0A%09%5EArray%20with%3A%20element%20with%3A%20result"));
smalltalk.bind(smalltalk.PPStringParser,"parse:",0
,function (aStream){var $s8Ret$={name:"stReturn"};try{var self=this;var back=nil;var reason=nil;((self['@string'].isEmpty()).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return self['@string'];})();throw($s8Ret$)})();})() : nil);
((aStream.peekForAll_(self['@string'])).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return self['@string'];})();throw($s8Ret$)})();})() : nil);
back=aStream.position();
reason="Expecting "._comma(self['@string'].toString().printString())._comma(" at ")._comma(back.printString())._comma(" read ")._comma(aStream.next_(self['@string'].size()).printString());
aStream.position_(back);
(function(){$s8Ret$.result=(function(){return smalltalk.PPFailure.reason_at_(reason, back);})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"parsing",unescape("parse%3A%20aStream%0D%0A%09%22%20Parse%20contents%20in%20aStream.%20%22%0D%0A%0D%0A%09%7C%20back%20reason%20%7C%0D%0A%09string%20isEmpty%20ifTrue%3A%20%5B%20%5Estring%20%5D.%0D%0A%09%28aStream%20peekForAll%3A%20string%29%20ifTrue%3A%20%5B%20%5Estring%20%5D.%0D%0A%09back%20%3A%3D%20aStream%20position.%0D%0A%09reason%20%3A%3D%20%27Expecting%20%27%2C%20string%20toString%20printString%0D%0A%09%09%2C%27%20at%20%27%2Cback%20printString%0D%0A%09%09%2C%27%20read%20%27%2C%28aStream%20next%3A%20string%20size%29%20printString.%0D%0A%09aStream%20position%3A%20back.%0D%0A%09%5EPPFailure%20reason%3A%20reason%20at%3A%20back"));
smalltalk.bind(smalltalk.PPStringParser,"string:",0
,function (aString){var self=this;self['@string']=aString;return self;}
,"accessing",unescape("string%3A%20aString%0D%0A%09%22%20Set%20the%20string%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09string%20%3A%3D%20aString"));
smalltalk.bind(smalltalk.PoolDictionary,"at:ifAbsent:",0
,function (aKey,aBlock){var self=this; var value = self["@hash"][aKey];
if(value === undefined) { return aBlock(); }
return value;;return self;}
,"accessing",unescape("at%3A%20aKey%20ifAbsent%3A%20aBlock%0D%0A%09%22%20Return%20the%20value%20at%20aKey%20or%20the%20result%20of%20evaluating%20aBlock.%20%22%0D%0A%0D%0A%7B%27%09var%20value%20%3D%20self%5B%22@hash%22%5D%5BaKey%5D%3B%0D%0A%09if%28value%20%3D%3D%3D%20undefined%29%20%7B%20return%20aBlock%28%29%3B%20%7D%0D%0A%09return%20value%3B%27%7D."));
smalltalk.bind(smalltalk.PoolDictionary,"includesKey:",0
,function (aKey){var $s8Ret$={name:"stReturn"};try{var self=this;self.at_ifAbsent_(aKey, (function(){return (function(){$s8Ret$.result=(function(){return false;})();throw($s8Ret$)})();}));
(function(){$s8Ret$.result=(function(){return true;})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"testing",unescape("includesKey%3A%20aKey%0D%0A%09%22%20Return%20true%20if%20the%20receiver%27s%20keys%20include%20aKey.%20%22%0D%0A%0D%0A%09self%20at%3A%20aKey%20ifAbsent%3A%20%5B%20%5Efalse%20%5D.%0D%0A%09%5Etrue"));
smalltalk.bind(smalltalk.PoolDictionary,"initialize",0
,function (){var self=this;smalltalk.superImplementor(smalltalk.PoolDictionary,'initialize').apply(self, []);
self['@hash']=self.newHash();return self;}
,"initialize",unescape("initialize%0D%0A%09%22%20Private%20-%20Initialize%20the%20receiver.%20%22%0D%0A%0D%0A%09super%20initialize.%0D%0A%09hash%20%3A%3D%20self%20newHash."));
smalltalk.bind(smalltalk.RegularExpression.$klass,"fromString:",0
,function (aString){var self=this;return self.fromString_flag_(aString, "");;return self;}
,"instantiation",unescape("fromString%3A%20aString%0D%0A%09%22%20Return%20an%20instance%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%20%20%20%20%5Eself%20fromString%3A%20aString%20flag%3A%20%27%27"));
smalltalk.bind(smalltalk.RegularExpression.$klass,"fromString:flag:",0
,function (aString,anotherString){var self=this; return new RegExp(aString, anotherString);;return self;}
,"instantiation",unescape("fromString%3A%20aString%20flag%3A%20anotherString%0D%0A%09%22%20Return%20an%20instance%20of%20the%20receiver.%20%22%0D%0A%0D%0A%7B%27%09return%20new%20RegExp%28aString%2C%20anotherString%29%3B%27%7D"));
smalltalk.bind(smalltalk.ReturnNode,"accept:",0
,function (aVisitor){var self=this;aVisitor.visitReturnNode_(self);return self;}
,"visiting",unescape("accept%3A%20aVisitor%0D%0A%09aVisitor%20visitReturnNode%3A%20self"));
smalltalk.bind(smalltalk.SendNode,"accept:",0
,function (aVisitor){var self=this;aVisitor.visitSendNode_(self);return self;}
,"visiting",unescape("accept%3A%20aVisitor%0D%0A%09aVisitor%20visitSendNode%3A%20self"));
smalltalk.bind(smalltalk.SendNode,"arguments",0
,function (){var self=this;return (((nil.isNil_(self['@arguments']))).mustBeBoolean()==true ? (function(){return [];})() : (function(){return self['@arguments'];})());;return self;}
,"accessing",unescape("arguments%0D%0A%09%5Earguments%20isNil%20ifTrue%3A%20%5B%20%23%28%29%20%5D%20ifFalse%3A%20%5B%20arguments%20%5D"));
smalltalk.bind(smalltalk.SendNode,"arguments:",0
,function (aCollection){var self=this;self['@arguments']=aCollection;return self;}
,"accessing",unescape("arguments%3A%20aCollection%0D%0A%09arguments%20%3A%3D%20aCollection"));
smalltalk.bind(smalltalk.SendNode,"receiver",0
,function (){var self=this;return self['@receiver'];;return self;}
,"accessing",unescape("receiver%0D%0A%09%5Ereceiver"));
smalltalk.bind(smalltalk.SendNode,"receiver:",0
,function (aNode){var self=this;self['@receiver']=aNode;return self;}
,"accessing",unescape("receiver%3A%20aNode%0D%0A%09receiver%20%3A%3D%20aNode"));
smalltalk.bind(smalltalk.SendNode,"selector",0
,function (){var self=this;return self['@selector'];;return self;}
,"accessing",unescape("selector%0D%0A%09%5Eselector"));
smalltalk.bind(smalltalk.SendNode,"selector:",0
,function (aString){var self=this;self['@selector']=aString;return self;}
,"accessing",unescape("selector%3A%20aString%0D%0A%09selector%20%3A%3D%20aString"));
smalltalk.bind(smalltalk.SendNode,"valueForReceiver:",0
,function (anObject){var self=this;return (function($rec){$rec.receiver_((((nil.isNil_(self.receiver()))).mustBeBoolean()==true ? (function(){return anObject;})() : (function(){return self.receiver().valueForReceiver_(anObject);})()));$rec.selector_(self.selector());$rec.arguments_(self.arguments());$rec.start_end_(self.start(), self.end());return $rec.yourself();})(smalltalk.SendNode.$$new());;return self;}
,"accessing",unescape("valueForReceiver%3A%20anObject%0D%0A%09%5ESendNode%20new%0D%0A%09%20%20%20%20receiver%3A%20%28self%20receiver%20isNil%20ifTrue%3A%20%5BanObject%5D%0D%0A%09%09ifFalse%3A%20%5Bself%20receiver%20valueForReceiver%3A%20anObject%5D%29%3B%0D%0A%09%20%20%20%20selector%3A%20self%20selector%3B%0D%0A%09%20%20%20%20arguments%3A%20self%20arguments%3B%0D%0A%09%20%20%20%20start%3A%20self%20start%20end%3A%20self%20end%3B%0D%0A%09%20%20%20%20yourself"));
smalltalk.bind(smalltalk.SequenceNode,"asBlockSequenceNode",0
,function (){var self=this;return (function($rec){$rec.nodes_(self.nodes());$rec.temps_(self.temps());$rec.start_end_(self.start(), self.end());return $rec.yourself();})(smalltalk.BlockSequenceNode.$$new());;return self;}
,"converting",unescape("asBlockSequenceNode%0D%0A%09%5EBlockSequenceNode%20new%0D%0A%09%20%20%20%20nodes%3A%20self%20nodes%3B%0D%0A%09%20%20%20%20temps%3A%20self%20temps%3B%0D%0A%09%20%20%20%20start%3A%20self%20start%20end%3A%20self%20end%3B%0D%0A%09%20%20%20%20yourself"));
smalltalk.bind(smalltalk.SequenceNode,"temps",0
,function (){var self=this;return (((nil.isNil_(self['@temps']))).mustBeBoolean()==true ? (function(){return [];})() : (function(){return self['@temps'];})());;return self;}
,"accessing",unescape("temps%0D%0A%09%5Etemps%20isNil%20ifTrue%3A%20%5B%20%23%28%29%20%5D%20ifFalse%3A%20%5B%20temps%20%5D"));
smalltalk.bind(smalltalk.SequenceNode,"temps:",0
,function (aCollection){var self=this;self['@temps']=aCollection;return self;}
,"accessing",unescape("temps%3A%20aCollection%0D%0A%09temps%20%3A%3D%20aCollection"));
smalltalk.bind(smalltalk.SequenceableCollection,"detect:ifNone:",0
,function (aBlock,anotherBlock){var self=this; for(var i = 0; i < self.length; i++) if(aBlock(self[i])) return self[i];
return anotherBlock();
;return self;}
,"enumerating",unescape("detect%3A%20aBlock%20ifNone%3A%20anotherBlock%0D%0A%09%22%20Return%20the%20object%20in%20the%20receiver%20that%20return%20true%20when%20evaluated%20with%20aBlock%20or%20the%20result%20of%20evaluating%20anotherBlock.%20%22%0D%0A%0D%0A%7B%27%09for%28var%20i%20%3D%200%3B%20i%20%3C%20self.length%3B%20i++%29%20if%28aBlock%28self%5Bi%5D%29%29%20return%20self%5Bi%5D%3B%0D%0A%09return%20anotherBlock%28%29%3B%0D%0A%27%7D"));
smalltalk.bind(smalltalk.SequenceableCollection,"first",0
,function (){var self=this;return self.at_((1));;return self;}
,"accessing",unescape("first%0D%0A%09%22%20Return%20the%20object%20in%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%20at%3A%201"));
smalltalk.bind(smalltalk.SequenceableCollection,"includes:",0
,function (anObject){var $s8Ret$={name:"stReturn"};try{var self=this;((self.isObject_(anObject)).mustBeBoolean()==true ? nil : (function(){return (function(){$s8Ret$.result=(function(){return self.indexOf(anObject)._gt((-1));})();throw($s8Ret$)})();})());
if (anObject.isNumber() && (self.indexOf(anObject) > -1)) return true;
if (anObject.isString() && (self.indexOf(anObject) > -1)) return true;
var i = self.length;
while (i--) { if (anObject._eq(self[i])) { return true; } }
return false; ;return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"testing",unescape("includes%3A%20anObject%0D%0A%09%22%20Return%20true%20if%20anObject%20is%20in%20the%20receiver.%0D%0A%09Note%3A%20the%20indexOf%28%29%20function%20fail%20to%20search%20in%20case%20of%20string%20literals%20in%20Array%20contents.%0D%0A%09%22%0D%0A%0D%0A%09%28self%20isObject%3A%20anObject%29%20ifFalse%3A%20%5B%0D%0A%09%09%5E%28self%20%23indexOf%3A%20anObject%29%20%3E%20-1%0D%0A%09%5D.%0D%0A%7B%27%09if%20%28anObject.isNumber%28%29%20%26%26%20%28self.indexOf%28anObject%29%20%3E%20-1%29%29%20return%20true%3B%0D%0A%09if%20%28anObject.isString%28%29%20%26%26%20%28self.indexOf%28anObject%29%20%3E%20-1%29%29%20return%20true%3B%0D%0A%09var%20i%20%3D%20self.length%3B%0D%0A%09while%20%28i--%29%20%7B%20if%20%28anObject._eq%28self%5Bi%5D%29%29%20%7B%20return%20true%3B%20%7D%20%7D%0D%0A%09return%20false%3B%20%27%7D"));
smalltalk.bind(smalltalk.SequenceableCollection,"isEmpty",0
,function (){var self=this; return (this.length)?false:true; ;return self;}
,"testing",unescape("isEmpty%0D%0A%09%22%20Return%20true%20if%20the%20receiver%20is%20empty.%0D%0A%09Note%3A%20%5Eself%20size%20%3D%200%20is%20slower%20than%20inlined%20impl.%0D%0A%09%22%0D%0A%0D%0A%7B%27%09return%20%28this.length%29%3Ffalse%3Atrue%3B%20%27%7D"));
smalltalk.bind(smalltalk.SequenceableCollection,"last",0
,function (){var self=this;return self.at_(self.size());;return self;}
,"accessing",unescape("last%0D%0A%09%22%20Return%20the%20object%20in%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%20at%3A%20self%20size"));
smalltalk.bind(smalltalk.SmalltalkParser,"binarySelectorChars",0
,function (){var self=this;return unescape("%7C%26%5C%5C+*/%3D%3E%3C%2C@%25%7E-");;return self;}
,"constants",unescape("binarySelectorChars%0D%0A%09%22%20Return%20the%20binary%20selector%20characters%20mask.%20%22%0D%0A%0D%0A%09%5E%27%7C%26%5C%5C+*/%3D%3E%3C%2C@%25%7E-%27"));
smalltalk.bind(smalltalk.SmalltalkParser,"defaultDirective:ws:",0
,function (number,ws){var self=this;return self.jsDirective_ws_(number, ws)._slash(self.missingDirective_ws_(number, ws));;return self;}
,"directives",unescape("defaultDirective%3A%20number%20ws%3A%20ws%0D%0A%09%22%20Private%20-%20Return%20the%20parser%20for%20default%20support%20of%20directives.%0D%0A%09We%20support%20inlined%20javascript%20directives.%0D%0A%09%22%0D%0A%0D%0A%09%5E%28self%20jsDirective%3A%20number%20ws%3A%20ws%29%0D%0A%09/%28self%20missingDirective%3A%20number%20ws%3A%20ws%29"));
smalltalk.bind(smalltalk.SmalltalkParser,"directive:ws:",0
,function (number,ws){var self=this;var parser=nil;parser=self.triggerEvent_withArguments_ifNotHandled_("needsDirectiveParser:ws:", smalltalk.Array.with_with_(number, ws), (function(){return self.defaultDirective_ws_(number, ws);}));
return unescape("%3C").asParser()._comma(ws._comma(parser)._comma(ws))._eq_eq_gt((function(node){return node.second().second();}));;return self;}
,"directives",unescape("directive%3A%20number%20ws%3A%20ws%0D%0A%09%22%20Private%20-%20Return%20the%20parser%20for%20directives.%20%22%0D%0A%0D%0A%09%7C%20parser%20%7C%0D%0A%09parser%20%3A%3D%20self%0D%0A%09%09triggerEvent%3A%20%23needsDirectiveParser%3Aws%3A%0D%0A%09%09withArguments%3A%20%28Array%20with%3A%20number%20with%3A%20ws%29%0D%0A%09%09ifNotHandled%3A%20%5B%20self%20defaultDirective%3A%20number%20ws%3A%20ws%20%5D.%0D%0A%0D%0A%09%5E%24%3C%20asParser%2C%20%28ws%2C%20parser%2C%20ws%29%0D%0A%09%09%3D%3D%3E%20%5B%3Anode%20%7C%20node%20second%20second%20%5D"));
smalltalk.bind(smalltalk.SmalltalkParser,"extendedSymbolChars",0
,function (){var self=this;return self.symbolChars()._comma(":")._comma(self.binarySelectorChars());;return self;}
,"constants",unescape("extendedSymbolChars%0D%0A%09%22%20Return%20the%20extended%20symbol%20characters%20mask.%20%22%0D%0A%0D%0A%09%5Eself%20symbolChars%20%2C%27%3A%27%20%2C%20self%20binarySelectorChars"));
smalltalk.bind(smalltalk.SmalltalkParser,"gc",0
,function (){var self=this;((smalltalk.Smalltalk.includesKey_("JSC")).mustBeBoolean()==true ? (function(){return smalltalk.Smalltalk.gc();})() : nil);return self;}
,"gc",unescape("gc%0D%0A%09%22%20Private%20-%20Perform%20%28preventive%29%20garbage%20collection.%0D%0A%09Note%3A%20JavascriptCore%20VM%20can%20crash%20reporting%0D%0A%09%20%27memory%20issues%27%20if%20we%20do%20not%20GC%20asap.%0D%0A%09%20This%20issue%20will%20persist%20while%20Apple%20continue%0D%0A%09%20%20distributing%20a%20version%20of%20JSC%20with%20issue%20reported%0D%0A%09%09http%3A//swiki.smalltalking.net/U8/232%0D%0A%09%09https%3A//bugs.webkit.org/show_bug.cgi%3Fid%3D160027%0D%0A%09%22%0D%0A%0D%0A%09%28Smalltalk%20includesKey%3A%20%23JSC%29%20ifTrue%3A%20%5B%20Smalltalk%20gc%20%5D."));
smalltalk.bind(smalltalk.SmalltalkParser,"globalNameParser",0
,function (){var self=this;return unescape("A-Z").asCharacterParser()._comma(self.symbolChars().asCharacterParser().star()).flatten();;return self;}
,"parsers",unescape("globalNameParser%0D%0A%09%22%20Return%20the%20parser%20for%20global%20names.%20%22%0D%0A%0D%0A%09%5E%28%27A-Z%27%20asCharacterParser%2C%20self%20symbolChars%20asCharacterParser%20star%29%20flatten"));
smalltalk.bind(smalltalk.SmalltalkParser,"jsDirective:ws:",0
,function (number,ws){var self=this;return "js:".asParser()._slash("javascript:".asParser())._comma(smalltalk.PPInlineParser.upTo_(unescape("%3A%3E")))._eq_eq_gt((function(node){return smalltalk.JSDirectiveNode.code_protected_(node.second(), node.first()._eq("javascript"));}));;return self;}
,"directives",unescape("jsDirective%3A%20number%20ws%3A%20ws%0D%0A%09%22%20Private%20-%20Return%20the%20parser%20for%20javascript%20directives.%0D%0A%09%22%0D%0A%0D%0A%09%5E%28%27js%3A%27%20asParser%20/%20%27javascript%3A%27%20asParser%29%2C%20%28PPInlineParser%20upTo%3A%20%27%3A%3E%27%29%0D%0A%09%09%3D%3D%3E%20%5B%3Anode%7C%20JSDirectiveNode%20code%3A%20node%20second%20protected%3A%20node%20first%20%3D%20%23javascript%20%5D"));
smalltalk.bind(smalltalk.SmalltalkParser,"jsSymbolChars",0
,function (){var self=this;return self.symbolChars()._comma("$");;return self;}
,"constants",unescape("jsSymbolChars%0D%0A%09%22%20Return%20the%20javascript%20symbol%20characters%20mask.%20%22%0D%0A%0D%0A%09%5Eself%20symbolChars%20%2C%24%24"));
smalltalk.bind(smalltalk.SmalltalkParser,"methodParserParts",0
,function (){var self=this;var expression=nil;var separator=nil;var comment=nil;var ws=nil;var identifier=nil;var keyword=nil;var stSelectorPart=nil;var string=nil;var symbol=nil;var number=nil;var variable=nil;var reference=nil;var globalReference=nil;var literal=nil;var returnExpression=nil;var expressionParser=nil;var keyword=nil;var unarySelector=nil;var binarySelector=nil;var keywordPattern=nil;var unaryPattern=nil;var binaryPattern=nil;var assignment=nil;var temps=nil;var blockParamList=nil;var block=nil;var expression=nil;var expressions=nil;var subexpression=nil;var statements=nil;var sequence=nil;var operand=nil;var unaryMessage=nil;var unarySend=nil;var unaryTail=nil;var binaryMessage=nil;var binarySend=nil;var binaryTail=nil;var keywordMessage=nil;var keywordSend=nil;var keywordPair=nil;var cascade=nil;var message=nil;var jsStatement=nil;var jsIndex=nil;var character=nil;var directive=nil;var arrayLiteral=nil;var arrayVariable=nil;var literalArray=nil;var aSymbol=nil;var stIdentifier=nil;var jsIdentifier=nil;var noReference=nil;var alienReference=nil;var alienIdentifier=nil;var emptyArray=nil;var hashedString=nil;separator=smalltalk.String.cr()._comma(smalltalk.String.space())._comma(smalltalk.String.lf())._comma(smalltalk.String.tab()).asChoiceParser();
comment=unescape("%22").asCharacterParser()._comma(unescape("%22").asParser().not()._comma(smalltalk.PPAnyParser.$$new()).star())._comma(unescape("%22").asCharacterParser()).flatten();
ws=separator._slash(comment).star();
string=unescape("%27").asParser()._comma(smalltalk.PPStStringParser.$$new())._eq_eq_gt((function(node){return smalltalk.ValueNode.$$new().value_(node.second());}));
hashedString=unescape("%23")._comma(unescape("%27")).asParser()._comma(smalltalk.PPStStringParser.$$new())._eq_eq_gt((function(node){return smalltalk.ValueNode.$$new().value_(node.second());}));
stIdentifier=unescape("a-z_").asCharacterParser()._comma(self.symbolChars().asCharacterParser().star()).flatten();
stSelectorPart=unescape("A-Za-z_").asCharacterParser()._comma(self.symbolChars().asCharacterParser().star()).flatten();
jsIdentifier=unescape("%23").asParser()._comma(self.jsSymbolChars().asCharacterParser().plus()).flatten();
alienIdentifier=self.jsSymbolChars().asCharacterParser().plus().flatten();
identifier=jsIdentifier._slash(stIdentifier);
keyword=stSelectorPart._slash(identifier)._comma(":").flatten();
symbol=unescape("%23").asParser()._comma(self.extendedSymbolChars().asCharacterParser().plus().flatten())._eq_eq_gt((function(node){return smalltalk.ValueNode.$$new().value_(node.second());}));
number=unescape("-0-9").asCharacterParser().plus()._comma(".".asParser()._comma(unescape("0-9").asCharacterParser().plus()).optional())._comma("r".asParser()._comma(unescape("A-Z0-9").asCharacterParser().plus()).optional()).flatten()._eq_eq_gt((function(node){return smalltalk.ValueNode.$$new().value_(node.asNumber());}));
character="$".asParser()._comma(smalltalk.PPAnyParser.$$new())._eq_eq_gt((function(node){return smalltalk.ValueNode.$$new().value_(node.at_((2)));}));
directive=self.directive_ws_(number, ws);
variable=identifier._eq_eq_gt((function(token){return smalltalk.VariableNode.$$new().value_(token);}));
noReference=unescape("%23").asParser()._eq_eq_gt((function(token){return smalltalk.NoReceiverNode.$$new();}));
literal=smalltalk.PPDelegateParser.$$new();
expression=smalltalk.PPDelegateParser.$$new();
arrayVariable="true".asParser()._eq_eq_gt((function(node){return smalltalk.ValueNode.$$new().value_(true);}))._slash("false".asParser()._eq_eq_gt((function(node){return smalltalk.ValueNode.$$new().value_(false);})))._slash("nil".asParser()._eq_eq_gt((function(node){return smalltalk.ValueNode.$$new().value_(nil);})));
aSymbol=self.extendedSymbolChars().asCharacterParser().plus().flatten()._eq_eq_gt((function(node){return smalltalk.ValueNode.$$new().value_(node);}));
arrayLiteral=literal._slash(arrayVariable)._slash(aSymbol)._slash(variable);
literalArray=unescape("%23%28").asParser()._comma(ws._comma(arrayLiteral)._comma(ws).star())._comma(unescape("%29"))._eq_eq_gt((function(node){self.gc();return smalltalk.ValueNode.$$new().value_(smalltalk.Array.withAll_(node.second().collect_((function(each){return each.second().value();}))));}));
emptyArray=unescape("%23%28").asParser()._comma(ws)._comma(unescape("%29"))._eq_eq_gt((function(node){return smalltalk.ValueNode.$$new().value_(smalltalk.Array.$$new());}));
globalReference=self.globalNameParser()._eq_eq_gt((function(token){self.gc();return smalltalk.GlobalReferenceNode.$$new().value_(token);}));
alienReference=unescape("%23%7B").asParser()._comma(alienIdentifier)._comma(unescape("%7D"))._eq_eq_gt((function(node){return smalltalk.AlienNode.$$new().value_(node.second());}));
jsIndex=unescape("%5B").asParser()._comma(expression)._comma(unescape("%5D"))._slash(unescape("%23").asParser()._comma(identifier));
reference=variable._slash(globalReference)._slash(alienReference)._comma(jsIndex.star())._eq_eq_gt((function(nodes){return nodes.first().indexedAs_(nodes);}));
binarySelector=unescape("%23").asParser().optional()._comma(self.binarySelectorChars().asCharacterParser().plus()).flatten();
unarySelector=stSelectorPart._slash(identifier);
keywordPattern=ws._comma(keyword)._comma(ws)._comma(identifier).plus()._eq_eq_gt((function(nodes){return smalltalk.Array.with_with_(nodes.collect_((function(each){return each.at_((2));})).join_(""), nodes.collect_((function(each){return each.at_((4));})));}));
binaryPattern=ws._comma(binarySelector)._comma(ws)._comma(identifier)._eq_eq_gt((function(node){return smalltalk.Array.with_with_(node.second(), smalltalk.Array.with_(node.fourth()));}));
unaryPattern=ws._comma(unarySelector)._eq_eq_gt((function(node){return smalltalk.Array.with_with_(node.second(), smalltalk.Array.$$new());}));
expressions=expression._comma(ws._comma(".")._comma(ws)._comma(expression)._eq_eq_gt((function(node){return node.fourth();})).star())._eq_eq_gt((function(node){return smalltalk.Array.with_(node.first())._comma(node.second());}));
assignment=reference._comma(ws)._comma(unescape("%3A%3D"))._comma(ws)._comma(expression)._eq_eq_gt((function(node){return (function($rec){$rec.left_(node.first());return $rec.right_(node.at_((5)));})(smalltalk.AssignmentNode.$$new());}));
returnExpression=unescape("%5E").asParser()._comma(ws)._comma(expression)._comma(ws)._comma(".".asParser().optional())._eq_eq_gt((function(node){return (function($rec){$rec.addNode_(node.third());return $rec.yourself();})(smalltalk.ReturnNode.$$new());}));
temps=unescape("%7C").asParser()._comma(ws._comma(identifier).star())._comma(ws)._comma(unescape("%7C"))._eq_eq_gt((function(node){return node.second().collect_((function(each){return each.second();}));}));
blockParamList=":".asParser()._comma(ws)._comma(identifier)._comma(ws).plus()._comma(unescape("%7C"))._eq_eq_gt((function(node){return node.first().collect_((function(each){return each.third();}));}));
subexpression=unescape("%28").asParser()._comma(ws)._comma(expression)._comma(ws)._comma(unescape("%29"))._eq_eq_gt((function(node){return node.third();}));
statements=returnExpression._eq_eq_gt((function(node){return smalltalk.Array.with_(node);}))._slash(expressions._comma(ws)._comma(".")._comma(ws)._comma(returnExpression)._eq_eq_gt((function(node){return (function($rec){$rec.add_(node.at_((5)));return $rec.yourself();})(node.first());})))._slash(expressions._comma(".".asParser().optional())._eq_eq_gt((function(node){return node.first();})));
sequence=temps.optional()._comma(ws)._comma(directive.optional())._comma(ws)._comma(statements.optional())._comma(ws)._eq_eq_gt((function(node){return (function($rec){$rec.directive_(node.third());$rec.temps_(node.first());$rec.nodes_(node.at_((5)));return $rec.yourself();})(smalltalk.ExtendedSequenceNode.$$new());}));
block=unescape("%5B").asParser()._comma(ws)._comma(blockParamList.optional())._comma(ws)._comma(sequence.optional())._comma(ws)._comma(unescape("%5D"))._eq_eq_gt((function(node){self.gc();return (function($rec){$rec.parameters_(node.third());return $rec.addNode_(node.at_((5)).asBlockSequenceNode());})(smalltalk.BlockNode.$$new());}));
operand=block._slash(literal)._slash(reference)._slash(noReference)._slash(subexpression);
literal.parser_(symbol._slash(number)._slash(string)._slash(character)._slash(emptyArray)._slash(literalArray)._slash(hashedString));
unaryMessage=ws._comma(unarySelector)._comma(":".asParser().not())._eq_eq_gt((function(node){return smalltalk.SendNode.$$new().selector_(node.second());}));
unaryTail=smalltalk.PPDelegateParser.$$new();
unaryTail.parser_(unaryMessage._comma(unaryTail.optional())._eq_eq_gt((function(node){return (((nil.isNil_(node.second()))).mustBeBoolean()==true ? (function(){return node.first();})() : (function(){return node.second().valueForReceiver_(node.first());})());})));
unarySend=operand._comma(unaryTail.optional())._eq_eq_gt((function(node){return (((nil.isNil_(node.second()))).mustBeBoolean()==true ? (function(){return node.first();})() : (function(){return node.second().valueForReceiver_(node.first());})());}));
binaryMessage=ws._comma(binarySelector)._comma(ws)._comma(unarySend._slash(operand))._eq_eq_gt((function(node){return (function($rec){$rec.selector_(node.second());return $rec.arguments_(smalltalk.Array.with_(node.fourth()));})(smalltalk.SendNode.$$new());}));
binaryTail=smalltalk.PPDelegateParser.$$new();
binaryTail.parser_(binaryMessage._comma(binaryTail.optional())._eq_eq_gt((function(node){return (((nil.isNil_(node.second()))).mustBeBoolean()==true ? (function(){return node.first();})() : (function(){return node.second().valueForReceiver_(node.first());})());})));
binarySend=unarySend._comma(binaryTail.optional())._eq_eq_gt((function(node){return (((nil.isNil_(node.second()))).mustBeBoolean()==true ? (function(){return node.first();})() : (function(){return node.second().valueForReceiver_(node.first());})());}));
keywordPair=keyword._comma(ws)._comma(binarySend);
keywordMessage=ws._comma(keywordPair).plus()._eq_eq_gt((function(nodes){return (function($rec){$rec.selector_(nodes.collect_((function(each){return each.second().first();})).join_(""));return $rec.arguments_(nodes.collect_((function(each){return each.second().third();})));})(smalltalk.SendNode.$$new());}));
keywordSend=binarySend._comma(keywordMessage)._eq_eq_gt((function(node){return node.second().valueForReceiver_(node.first());}));
message=binaryMessage._slash(unaryMessage)._slash(keywordMessage);
cascade=keywordSend._slash(binarySend)._comma(ws._comma(unescape("%3B"))._comma(message).plus())._eq_eq_gt((function(node){return node.first().cascadeNodeWithMessages_(node.second().collect_((function(each){return each.third();})));}));
jsStatement=unescape("%7B").asParser()._comma(ws)._comma(string)._comma(ws)._comma(unescape("%7D"))._eq_eq_gt((function(node){return (function($rec){$rec.source_(node.third());return $rec.yourself();})(smalltalk.InlineNode.$$new());}));
expression.parser_(assignment._slash(cascade)._slash(keywordSend)._slash(binarySend)._slash(jsStatement));
return smalltalk.Array.with_with_with_(ws, keywordPattern._slash(binaryPattern)._slash(unaryPattern), sequence.optional());;return self;}
,"private",unescape("methodParserParts%0D%0A%09%22%20Private%20-%20Return%20a%20parser%20for%20parts%20of%20a%20method.%20%22%0D%0A%0D%0A%20%7C%20expression%20separator%20comment%20ws%20identifier%20keyword%20stSelectorPart%0D%0A%20%20string%20symbol%20number%20variable%20reference%20globalReference%0D%0A%20%20literal%20returnExpression%20expressionParser%20keyword%20unarySelector%0D%0A%20%20binarySelector%20keywordPattern%20unaryPattern%20binaryPattern%20assignment%0D%0A%20%20temps%20blockParamList%20block%20expression%20expressions%20subexpression%0D%0A%20%20statements%20sequence%20operand%20unaryMessage%20unarySend%20unaryTail%0D%0A%20%20binaryMessage%20binarySend%20binaryTail%20keywordMessage%20keywordSend%0D%0A%20%20keywordPair%20cascade%20message%20jsStatement%20jsIndex%20character%20directive%0D%0A%20%20arrayLiteral%20arrayVariable%20literalArray%20aSymbol%0D%0A%20%20stIdentifier%20jsIdentifier%20noReference%20alienReference%0D%0A%20%20alienIdentifier%20emptyArray%20hashedString%0D%0A%20%7C%0D%0A%0D%0A%20separator%20%3A%3D%20%28String%20cr%2C%20String%20space%2C%20String%20lf%2C%20String%20tab%29%20asChoiceParser.%0D%0A%20comment%20%3A%3D%20%28%24%22%20asCharacterParser%2C%20%28%24%22%20asParser%20not%2C%20PPAnyParser%20new%29%20star%2C%20%24%22%20asCharacterParser%29%20flatten.%0D%0A%20ws%20%3A%3D%20%28separator%20/%20comment%29%20star.%0D%0A%20%0D%0A%20string%20%3A%3D%20%24%27%20asParser%20%2C%20PPStStringParser%20new%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%7C%20ValueNode%20new%20value%3A%20node%20second%20%5D.%0D%0A%20%0D%0A%20hashedString%20%3A%3D%20%28%24%23%2C%24%27%29%20asParser%20%2C%20PPStStringParser%20new%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%7C%20ValueNode%20new%20value%3A%20node%20second%20%5D.%0D%0A%0D%0A%20stIdentifier%20%3A%3D%20%28%27a-z_%27%20asCharacterParser%2C%20self%20symbolChars%20asCharacterParser%20star%29%20flatten.%0D%0A%20stSelectorPart%20%3A%3D%20%28%27A-Za-z_%27%20asCharacterParser%2C%20self%20symbolChars%20asCharacterParser%20star%29%20flatten.%0D%0A%20jsIdentifier%20%3A%3D%20%28%24%23%20asParser%2C%20self%20jsSymbolChars%20asCharacterParser%20plus%29%20flatten.%0D%0A%20alienIdentifier%20%3A%3D%20self%20jsSymbolChars%20asCharacterParser%20plus%20flatten.%0D%0A%20identifier%20%3A%3D%20jsIdentifier%20/%20stIdentifier.%0D%0A%0D%0A%20keyword%20%3A%3D%20%28stSelectorPart%20/%20identifier%2C%20%24%3A%29%20flatten.%0D%0A%0D%0A%20symbol%20%3A%3D%20%24%23%20asParser%2C%20self%20extendedSymbolChars%20asCharacterParser%20plus%20flatten%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%20%7C%20ValueNode%20new%20value%3A%20node%20second%20%5D.%0D%0A%0D%0A%20number%20%3A%3D%20%28%27-0-9%27%20asCharacterParser%20plus%0D%0A%20%20%2C%20%28%24.%20asParser%2C%20%270-9%27%20asCharacterParser%20plus%29%20optional%0D%0A%20%20%2C%20%28%24r%20asParser%2C%20%27A-Z0-9%27%20asCharacterParser%20plus%29%20optional%0D%0A%20%20%29%20flatten%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%20%7C%20ValueNode%20new%20value%3A%20node%20asNumber%20%5D.%0D%0A%0D%0A%20character%20%3A%3D%20%24%24%20asParser%2C%20PPAnyParser%20new%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%20%7C%20ValueNode%20new%20value%3A%20%28node%20at%3A%202%29%20%5D.%0D%0A%0D%0A%20directive%20%3A%3D%20self%20directive%3A%20number%20ws%3A%20ws.%0D%0A%0D%0A%20variable%20%3A%3D%20identifier%20%3D%3D%3E%20%5B%3Atoken%20%7C%20VariableNode%20new%20value%3A%20token%20%5D.%0D%0A%20noReference%20%3A%3D%20%24%23%20asParser%20%3D%3D%3E%20%5B%3Atoken%20%7C%20NoReceiverNode%20new%20%5D.%0D%0A%20literal%20%3A%3D%20PPDelegateParser%20new.%0D%0A%20expression%20%3A%3D%20PPDelegateParser%20new.%0D%0A%0D%0A%20arrayVariable%20%3A%3D%0D%0A%20%20%20%20%28%23true%20asParser%20%3D%3D%3E%20%5B%3Anode%7C%20ValueNode%20new%20value%3A%20true%20%5D%29%0D%0A%20%20/%20%28%23false%20asParser%20%3D%3D%3E%20%5B%3Anode%7C%20ValueNode%20new%20value%3A%20false%20%5D%29%0D%0A%20%20/%20%28%23nil%20asParser%20%3D%3D%3E%20%5B%3Anode%7C%20ValueNode%20new%20value%3A%20nil%20%5D%29.%0D%0A%20aSymbol%20%3A%3D%20self%20extendedSymbolChars%20asCharacterParser%20plus%20flatten%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%7C%20ValueNode%20new%20value%3A%20node%20%5D.%0D%0A%0D%0A%20arrayLiteral%20%3A%3D%20literal%20/%20arrayVariable%20/%20aSymbol%20/%20variable.%0D%0A%20literalArray%20%3A%3D%20%27%23%28%27%20asParser%2C%20%28ws%2C%20arrayLiteral%2C%20ws%29%20star%2C%20%24%29%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%20%7C%20self%20gc.%20ValueNode%20new%20value%3A%0D%0A%20%20%20%20%28Array%20withAll%3A%20%28node%20second%0D%0A%20%20%20%20%20collect%3A%20%5B%3Aeach%20%7C%20each%20second%20value%5D%29%29%20%5D.%0D%0A%20emptyArray%20%3A%3D%20%27%23%28%27%20asParser%20%2Cws%20%2C%24%29%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%20%7C%20ValueNode%20new%20value%3A%20Array%20new%20%5D.%0D%0A%0D%0A%20globalReference%20%3A%3D%20self%20globalNameParser%0D%0A%20%20%3D%3D%3E%20%5B%3Atoken%20%7C%20self%20gc.%20GlobalReferenceNode%20new%20value%3A%20token%20%5D.%0D%0A%20alienReference%20%3A%3D%20%27%23%7B%27%20asParser%2C%20alienIdentifier%2C%20%24%7D%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%20%7C%20AlienNode%20new%20value%3A%20node%20second%20%5D.%0D%0A%0D%0A%20jsIndex%20%3A%3D%20%24%5B%20asParser%2C%20expression%2C%20%24%5D%0D%0A%20%20/%20%28%24%23%20asParser%2C%20identifier%29.%0D%0A%20reference%20%3A%3D%20%28variable%20/%20globalReference%20/%20alienReference%29%20%2C%20jsIndex%20star%0D%0A%20%20%3D%3D%3E%20%5B%3Anodes%20%7C%20nodes%20first%20indexedAs%3A%20nodes%20%5D.%0D%0A%0D%0A%20binarySelector%20%3A%3D%20%28%24%23%20asParser%20optional%2C%20self%20binarySelectorChars%20asCharacterParser%20plus%29%20flatten.%0D%0A%0D%0A%20unarySelector%20%3A%3D%20stSelectorPart%20/%20identifier.%0D%0A%0D%0A%20keywordPattern%20%3A%3D%20%28ws%2C%20keyword%2C%20ws%2C%20identifier%29%20plus%0D%0A%20%20%3D%3D%3E%20%5B%3Anodes%20%7C%20Array%0D%0A%20%20%20with%3A%20%28%28nodes%20collect%3A%20%5B%3Aeach%20%7C%20each%20at%3A%202%5D%29%20join%3A%20%27%27%29%0D%0A%20%20%20with%3A%20%28nodes%20collect%3A%20%5B%3Aeach%20%7C%20each%20at%3A%204%5D%29%20%5D.%0D%0A%0D%0A%20binaryPattern%20%3A%3D%20ws%2C%20binarySelector%2C%20ws%2C%20identifier%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%20%7C%20Array%20with%3A%20node%20second%20with%3A%20%28Array%20with%3A%20node%20fourth%29%5D.%0D%0A%0D%0A%20unaryPattern%20%3A%3D%20ws%2C%20unarySelector%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%20%7C%20Array%20with%3A%20node%20second%20with%3A%20Array%20new%5D.%0D%0A%20%0D%0A%20expressions%20%3A%3D%20expression%2C%20%28%28ws%2C%20%24.%2C%20ws%2C%20expression%29%20%3D%3D%3E%20%5B%3Anode%20%7C%20node%20fourth%5D%29%20star%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%20%7C%20%28Array%20with%3A%20node%20first%29%20%2Cnode%20second%20%5D.%0D%0A%0D%0A%20assignment%20%3A%3D%20reference%2C%20ws%2C%20%27%3A%3D%27%2C%20ws%2C%20expression%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%20%7C%20AssignmentNode%20new%20left%3A%20node%20first%3B%20right%3A%20%28node%20at%3A%205%29%5D.%0D%0A%0D%0A%20returnExpression%20%3A%3D%20%24%5E%20asParser%2C%20ws%2C%20expression%2C%20ws%2C%20%24.%20asParser%20optional%0D%0A%20%20%20%20%20%3D%3D%3E%20%5B%3Anode%20%7C%20ReturnNode%20new%20addNode%3A%20node%20third%3B%20yourself%20%5D.%0D%0A%0D%0A%20temps%20%3A%3D%20%24%7C%20asParser%2C%20%28ws%2C%20identifier%29%20star%2C%20ws%2C%20%24%7C%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%20%7C%20node%20second%20collect%3A%20%5B%3Aeach%20%7C%20each%20second%20%5D%20%5D.%0D%0A%0D%0A%20blockParamList%20%3A%3D%20%28%24%3A%20asParser%2C%20ws%2C%20identifier%2C%20ws%29%20plus%2C%20%24%7C%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%20%7C%20node%20first%20collect%3A%20%5B%3Aeach%20%7C%20each%20third%20%5D%20%5D.%0D%0A%0D%0A%20subexpression%20%3A%3D%20%24%28%20asParser%2C%20ws%2C%20expression%2C%20ws%2C%20%24%29%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%20%7C%20node%20third%20%5D.%0D%0A%0D%0A%20statements%20%3A%3D%20%28returnExpression%20%3D%3D%3E%20%5B%3Anode%20%7C%20Array%20with%3A%20node%5D%29%0D%0A%20%20/%20%28expressions%2C%20ws%2C%20%24.%2C%20ws%2C%20returnExpression%20%3D%3D%3E%20%5B%3Anode%20%7C%20node%20first%20add%3A%20%28node%20at%3A%205%29%3B%20yourself%20%5D%29%0D%0A%20%20/%20%28expressions%20%2C%20%24.%20asParser%20optional%20%3D%3D%3E%20%5B%3Anode%20%7C%20node%20first%20%5D%29.%0D%0A%0D%0A%20sequence%20%3A%3D%20temps%20optional%2C%20ws%2C%20directive%20optional%2C%20ws%2C%20statements%20optional%2C%20ws%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%20%7C%20ExtendedSequenceNode%20new%0D%0A%20%20%20directive%3A%20node%20third%3B%0D%0A%20%20%20temps%3A%20node%20first%3B%0D%0A%20%20%20nodes%3A%20%28node%20at%3A%205%29%3B%0D%0A%20%20%20yourself%20%5D.%0D%0A%0D%0A%20block%20%3A%3D%20%24%5B%20asParser%2C%20ws%2C%20blockParamList%20optional%2C%20ws%2C%20sequence%20optional%2C%20ws%2C%20%24%5D%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%20%7C%20self%20gc.%20BlockNode%20new%0D%0A%20%20%20parameters%3A%20node%20third%3B%0D%0A%20%20%20addNode%3A%20%28node%20at%3A%205%29%20asBlockSequenceNode%20%5D.%0D%0A%0D%0A%20operand%20%3A%3D%20block%20/%20literal%20/%20reference%20/%20noReference%20/%20subexpression.%0D%0A%0D%0A%20literal%20parser%3A%20symbol%20/%20number%20/%20string%20/%20character%0D%0A%20%20/%20emptyArray%20/%20literalArray%20/%20hashedString.%0D%0A%0D%0A%20unaryMessage%20%3A%3D%20ws%2C%20unarySelector%2C%20%24%3A%20asParser%20not%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%20%7C%20SendNode%20new%20selector%3A%20node%20second%20%5D.%0D%0A%0D%0A%20unaryTail%20%3A%3D%20PPDelegateParser%20new.%0D%0A%20unaryTail%20parser%3A%20%28unaryMessage%2C%20unaryTail%20optional%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%20%7C%20node%20second%20isNil%20ifTrue%3A%20%5B%20node%20first%20%5D%0D%0A%20%20%20ifFalse%3A%20%5B%20node%20second%20valueForReceiver%3A%20node%20first%20%5D%20%5D%29.%0D%0A%0D%0A%20unarySend%20%3A%3D%20operand%2C%20unaryTail%20optional%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%20%7C%20node%20second%20isNil%20ifTrue%3A%20%5B%20node%20first%20%5D%0D%0A%20%20%20ifFalse%3A%20%5B%20node%20second%20valueForReceiver%3A%20node%20first%20%5D%20%5D.%0D%0A%0D%0A%20binaryMessage%20%3A%3D%20ws%2C%20binarySelector%2C%20ws%2C%20%28unarySend%20/%20operand%29%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%20%7C%20SendNode%20new%0D%0A%20%20%20selector%3A%20node%20second%3B%0D%0A%20%20%20arguments%3A%20%28Array%20with%3A%20node%20fourth%29%20%5D.%0D%0A%0D%0A%20binaryTail%20%3A%3D%20PPDelegateParser%20new.%0D%0A%20binaryTail%20parser%3A%20%28binaryMessage%2C%20binaryTail%20optional%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%20%7C%20node%20second%20isNil%20ifTrue%3A%20%5B%20node%20first%20%5D%0D%0A%20%20%20ifFalse%3A%20%5B%20node%20second%20valueForReceiver%3A%20node%20first%20%5D%20%5D%29.%0D%0A%0D%0A%20binarySend%20%3A%3D%20unarySend%2C%20binaryTail%20optional%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%20%7C%20node%20second%20isNil%20ifTrue%3A%20%5B%20node%20first%20%5D%0D%0A%20%20%20ifFalse%3A%20%5B%20node%20second%20valueForReceiver%3A%20node%20first%20%5D%20%5D.%0D%0A%0D%0A%20keywordPair%20%3A%3D%20keyword%2C%20ws%2C%20binarySend.%0D%0A%0D%0A%20keywordMessage%20%3A%3D%20%28ws%2C%20keywordPair%29%20plus%0D%0A%20%20%3D%3D%3E%20%5B%3Anodes%20%7C%20SendNode%20new%0D%0A%20%20%20selector%3A%20%28%28nodes%20collect%3A%20%5B%3Aeach%20%7C%20each%20second%20first%5D%29%20join%3A%20%27%27%29%3B%0D%0A%20%20%20arguments%3A%20%28nodes%20collect%3A%20%5B%3Aeach%20%7C%20each%20second%20third%5D%29%5D.%0D%0A%0D%0A%20keywordSend%20%3A%3D%20binarySend%2C%20keywordMessage%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%20%7C%20node%20second%20valueForReceiver%3A%20node%20first%5D.%0D%0A%0D%0A%20message%20%3A%3D%20binaryMessage%20/%20unaryMessage%20/%20keywordMessage.%0D%0A%0D%0A%20cascade%20%3A%3D%20%28keywordSend%20/%20binarySend%29%2C%20%28ws%2C%20%24%3B%2C%20message%29%20plus%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%20%7C%20node%20first%20cascadeNodeWithMessages%3A%20%0D%0A%20%20%20%28node%20second%20collect%3A%20%5B%3Aeach%20%7C%20each%20third%20%5D%29%5D.%0D%0A%0D%0A%20jsStatement%20%3A%3D%20%24%7B%20asParser%2C%20ws%2C%20string%2C%20ws%2C%20%24%7D%0D%0A%20%20%3D%3D%3E%20%5B%3Anode%20%7C%20InlineNode%20new%20source%3A%20node%20third%3B%20yourself%20%5D.%0D%0A%0D%0A%20expression%20parser%3A%20assignment%20/%20cascade%20/%20keywordSend%20/%20binarySend%20/%20jsStatement.%0D%0A%0D%0A%09%5EArray%09with%3A%20ws%0D%0A%09%09with%3A%20keywordPattern%20/%20binaryPattern%20/%20unaryPattern%0D%0A%09%09with%3A%20sequence%20optional"));
smalltalk.bind(smalltalk.SmalltalkParser,"missingDirective:ws:",0
,function (number,ws){var self=this;return unescape("%5E%3E").asCharacterParser().star().flatten()._comma(unescape("%3E"))._eq_eq_gt((function(node){return node.first().error_("Invalid directive.");}));;return self;}
,"directives",unescape("missingDirective%3A%20number%20ws%3A%20ws%0D%0A%09%22%20Private%20-%20Return%20the%20parser%20for%20missing%20support%20of%20directives.%20%22%0D%0A%0D%0A%09%5E%27%5E%3E%27%20asCharacterParser%20star%20flatten%2C%20%24%3E%0D%0A%09%09%3D%3D%3E%20%5B%3Anode%7C%20node%20first%20error%3A%20%27Invalid%20directive.%27%20%5D"));
smalltalk.bind(smalltalk.SmalltalkParser,"parse:",0
,function (aStream){var self=this;return self.parser().parse_(aStream);;return self;}
,"parsing",unescape("parse%3A%20aStream%0D%0A%09%22%20Parse%20contents%20in%20aStream.%20%22%0D%0A%0D%0A%09%5Eself%20parser%20parse%3A%20aStream"));
smalltalk.bind(smalltalk.SmalltalkParser,"parser",0
,function (){var self=this;var parts=nil;var ws=nil;var header=nil;var body=nil;var method=nil;parts=self.methodParserParts();
ws=parts.first();
header=parts.second();
body=parts.third();
method=ws._comma(header)._comma(ws)._comma(body)._comma(ws).withSource()._eq_eq_gt((function(node){return (function($rec){$rec.selector_(node.first().second().first());$rec.arguments_(node.first().second().second());$rec.addNode_(node.first().fourth());$rec.source_(node.second());return $rec.yourself();})(smalltalk.MethodNode.$$new());}));
return method._comma(smalltalk.PPEOFParser.$$new())._eq_eq_gt((function(nodes){return nodes.first();}));;return self;}
,"parsers",unescape("parser%0D%0A%09%22%20Returns%20the%20method%20parser.%20%22%0D%0A%0D%0A%09%7C%20parts%20ws%20header%20body%20method%20%7C%0D%0A%09parts%20%3A%3D%20self%20methodParserParts.%0D%0A%09ws%20%3A%3D%20parts%20first.%0D%0A%09header%20%3A%3D%20parts%20second.%0D%0A%09body%20%3A%3D%20parts%20third.%0D%0A%0D%0A%09method%20%3A%3D%20%28ws%20%2Cheader%20%2Cws%20%2Cbody%20%2Cws%29%20withSource%0D%0A%09%20%20%3D%3D%3E%20%5B%3Anode%20%7C%20MethodNode%20new%0D%0A%09%09selector%3A%20node%20first%20second%20first%3B%0D%0A%09%09arguments%3A%20node%20first%20second%20second%3B%0D%0A%09%09addNode%3A%20node%20first%20fourth%3B%0D%0A%09%09source%3A%20node%20second%3B%0D%0A%09%09yourself%20%5D.%0D%0A%20%0D%0A%20%09%5Emethod%20%2CPPEOFParser%20new%20%3D%3D%3E%20%5B%3Anodes%20%7C%20nodes%20first%20%5D"));
smalltalk.bind(smalltalk.SmalltalkParser,"symbolChars",0
,function (){var self=this;return unescape("a-zA-Z0-9_");;return self;}
,"constants",unescape("symbolChars%0D%0A%09%22%20Return%20the%20symbol%20characters%20mask.%20%22%0D%0A%0D%0A%09%5E%27a-zA-Z0-9_%27"));
smalltalk.bind(smalltalk.Smalltalk,"compilerSupport",0
,function (){var self=this;return smalltalk.Compiler;;return self;}
,"Compiler-accessing",unescape("compilerSupport%0D%0A%09%22%20Return%20the%20compiler%20support%20for%20the%20receiver.%20%22%0D%0A%0D%0A%09%5ECompiler"));
smalltalk.bind(smalltalk.Smalltalk,"eval:",0
,function (jsExpression){var self=this;return eval(jsExpression);;return self;}
,"javascript",unescape("eval%3A%20jsExpression%0D%0A%09%22%20Return%20the%20result%20of%20evaluating%20a%20javascript%20expression%20in%20global%20context.%20%22%0D%0A%0D%0A%09%5E%23%20%23eval%3A%20jsExpression"));
smalltalk.bind(smalltalk.Smalltalk.$klass,"current",0
,function (){var self=this;return smalltalk;;return self;}
,"accessing",unescape("current%0D%0A%09%22%20Return%20the%20current%20smalltalk%20system%20instance.%20%22%0D%0A%0D%0A%09%5E%23%7Bsmalltalk%7D"));
smalltalk.bind(smalltalk.Smalltalk.$klass,"includesKey:",0
,function (aGlobalName){var self=this;return (nil.is_eqeq_(((function(){var $1$=smalltalk.Smalltalk.current()[aGlobalName];if(nil.isNil_($1$))return ((function(){return undefined;}).value());return $1$;})()),undefined)).not();;return self;}
,"accessing",unescape("includesKey%3A%20aGlobalName%0D%0A%09%22%20Returns%20true%20if%20the%20global%20aGlobalName%20is%20defined%20in%20the%20receiver.%20%22%0D%0A%0D%0A%09%5E%28%28Smalltalk%20current%0D%0A%09%09basicAt%3A%20aGlobalName%20ifAbsent%3A%20%5B%23%7Bundefined%7D%5D%29%0D%0A%09%09%3D%3D%20%23%7Bundefined%7D%29%20not"));
smalltalk.bind(smalltalk.Stream,"atEnd",0
,function (){var self=this;return self.position()._gt_eq(self.size());;return self;}
,"testing",unescape("atEnd%0D%0A%09%22%20Return%20true%20if%20the%20receiver%20is%20at%20end.%20%22%0D%0A%0D%0A%09%5Eself%20position%20%3E%3D%20self%20size"));
smalltalk.bind(smalltalk.Stream,"collection",0
,function (){var self=this;return self['@collection'];;return self;}
,"accessing",unescape("collection%0D%0A%09%22%20Private%20-%20Return%20the%20collection%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Ecollection"));
smalltalk.bind(smalltalk.Stream,"collection:",0
,function (aCollection){var self=this;self['@collection']=aCollection;return self;}
,"accessing",unescape("collection%3A%20aCollection%0D%0A%09%22%20Private%20-%20Set%20the%20collection%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09collection%20%3A%3D%20aCollection"));
smalltalk.bind(smalltalk.Stream,"contents",0
,function (){var $s8Ret$={name:"stReturn"};try{var self=this;var result=nil;result=self.collection();
((self.readLimit()._eq(result.size())).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return result;})();throw($s8Ret$)})();})() : nil);
(function(){$s8Ret$.result=(function(){return result.copyFrom_to_((1), self.readLimit());})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"accessing",unescape("contents%0D%0A%09%22%20Return%20the%20contents%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%7C%20result%20%7C%0D%0A%09result%20%3A%3D%20self%20collection.%0D%0A%09self%20readLimit%20%3D%20result%20size%20ifTrue%3A%20%5B%20%5Eresult%20%5D.%0D%0A%09%5Eresult%20copyFrom%3A%201%20to%3A%20self%20readLimit"));
smalltalk.bind(smalltalk.Stream,"cr",0
,function (){var self=this;self.nextPutAll_(smalltalk.String.crlf());return self;}
,"writing",unescape("cr%0D%0A%09%22%20Put%20a%20line%20break%20sequence%20onto%20the%20receiver.%0D%0A%09Note%3A%20this%20implementation%20MUST%20be%20consistent%20with%20%23nextLine%0D%0A%09%22%0D%0A%0D%0A%09self%20nextPutAll%3A%20String%20crlf"));
smalltalk.bind(smalltalk.Stream,"initialize",0
,function (){var self=this;smalltalk.superImplementor(smalltalk.Stream,'initialize').apply(self, []);
self['@position']=(0);return self;}
,"initialize",unescape("initialize%0D%0A%09%22%20Private%20-%20Initialize%20the%20receiver.%20%22%0D%0A%0D%0A%09super%20initialize.%0D%0A%09position%20%3A%3D%200."));
smalltalk.bind(smalltalk.Stream,"position",0
,function (){var self=this;return self['@position'];;return self;}
,"accessing",unescape("position%0D%0A%09%22%20Return%20the%20position%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eposition"));
smalltalk.bind(smalltalk.Stream,"position:",0
,function (anInteger){var self=this;self['@position']=anInteger;return self;}
,"accessing",unescape("position%3A%20anInteger%0D%0A%09%22%20Set%20the%20position%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09position%20%3A%3D%20anInteger"));
smalltalk.bind(smalltalk.Stream,"readLimit",0
,function (){var self=this;(((nil.is_eqeq_(self['@readLimit'],nil))).mustBeBoolean()==true ? (function(){return self['@readLimit']=self.collection().size();})() : nil);
return self['@readLimit'];;return self;}
,"accessing",unescape("readLimit%0D%0A%09%22%20Private%20-%20Return%20the%20read%20limit%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09readLimit%20%3D%3D%20nil%20ifTrue%3A%20%5B%20readLimit%20%3A%3D%20self%20collection%20size%20%5D.%0D%0A%09%5EreadLimit"));
smalltalk.bind(smalltalk.Stream,"readLimit:",0
,function (anInteger){var self=this;self['@readLimit']=anInteger;return self;}
,"accessing",unescape("readLimit%3A%20anInteger%0D%0A%09%22%20Private%20-%20Set%20the%20stream%20size%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09readLimit%20%3A%3D%20anInteger"));
smalltalk.bind(smalltalk.Stream,"size",0
,function (){var self=this;return self.readLimit();;return self;}
,"accessing",unescape("size%0D%0A%09%22%20Return%20the%20size%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%20readLimit"));
smalltalk.bind(smalltalk.Stream.$klass,"on:",0
,function (aCollection){var self=this;return (function($rec){$rec.collection_(aCollection);$rec.readLimit_(aCollection.size());return $rec.yourself();})(self.$$new());;return self;}
,"instantiation",unescape("on%3A%20aCollection%0D%0A%09%22%20Return%20an%20instance%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%20new%20%0D%0A%09%09collection%3A%20aCollection%3B%0D%0A%09%09readLimit%3A%20aCollection%20size%3B%0D%0A%09%09yourself"));
smalltalk.bind(smalltalk.StringStream,"next",0
,function (){var self=this;var result=nil;result=self.peek();
(((nil.isNil_(result)===false)).mustBeBoolean()==true ? (function(){return self['@position']=self['@position']._plus((1));})() : nil);
return result;;return self;}
,"reading",unescape("next%0D%0A%09%22%20Return%20the%20next%20readable%20element%20in%20the%20receiver%20%28or%20nil%29.%20%22%0D%0A%0D%0A%09%7C%20result%20%7C%0D%0A%09result%20%3A%3D%20self%20peek.%0D%0A%09result%20notNil%20ifTrue%3A%20%5B%20position%20%3A%3D%20position%20+%201%20%5D.%0D%0A%09%5Eresult"));
smalltalk.bind(smalltalk.StringStream,"nextPutAll:",0
,function (aString){var self=this;var result=nil;((self.position()._eq(self.collection().size())).mustBeBoolean()==true ? (function(){return result=self.collection()._comma(aString);})() : (function(){var substring=nil;substring=self.collection().copyFrom_to_((1), self.position());result=((substring.isEmpty()).mustBeBoolean()==true ? (function(){return aString;})() : (function(){return substring._comma(aString);})());substring=self.collection().copyFrom_to_(self.position()._plus((1))._plus(aString.size()), self.collection().size());return result=((substring.isEmpty()).mustBeBoolean()==true ? (function(){return result;})() : (function(){return result._comma(substring);})());})());
self.collection_(result);
self.position_(self.position()._plus(aString.size()));
self.readLimit_(self.readLimit().max_(self['@position']));return self;}
,"writing",unescape("nextPutAll%3A%20aString%0D%0A%09%22%20Put%20aString%20onto%20the%20receiver%20at%20current%20position%3B%20expanding%20internal%20contents.%20%22%0D%0A%0D%0A%09%7C%20result%20%7C%0D%0A%09self%20position%20%3D%20self%20collection%20size%0D%0A%09ifTrue%3A%20%5B%20result%20%3A%3D%20self%20collection%20%2C%20aString%20%5D%0D%0A%09ifFalse%3A%20%5B%20%7C%20substring%20%7C%0D%0A%09%09substring%20%3A%3D%20self%20collection%20copyFrom%3A%201%20to%3A%20self%20position.%0D%0A%09%09result%20%3A%3D%20substring%20isEmpty%20ifTrue%3A%20%5B%20aString%20%5D%20ifFalse%3A%20%5B%20substring%20%2C%20aString%20%5D.%0D%0A%09%09substring%20%3A%3D%20self%20collection%0D%0A%09%09%09copyFrom%3A%20self%20position%20+%201%20+%20aString%20size%0D%0A%09%09%09to%3A%20self%20collection%20size.%0D%0A%09%09result%20%3A%3D%20substring%20isEmpty%20ifTrue%3A%20%5B%20result%20%5D%20ifFalse%3A%20%5B%20result%20%2C%20substring%20%5D.%0D%0A%09%5D.%0D%0A%09self%20collection%3A%20result.%0D%0A%09self%20position%3A%20self%20position%20+%20aString%20size.%0D%0A%09self%20readLimit%3A%20%28self%20readLimit%20max%3A%20position%29"));
smalltalk.bind(smalltalk.StringStream,"next:",0
,function (anInteger){var self=this;var start=nil;var result=nil;var stop=nil;start=self.position();
stop=start._plus(anInteger).min_(self.readLimit());
result=self.collection().copyFrom_to_(start._plus((1)), stop);
self.position_(stop);
return result;;return self;}
,"reading",unescape("next%3A%20anInteger%0D%0A%09%22%20Return%20the%20next%20anInteger%20elements%20read%20from%20the%20receiver.%0D%0A%09If%20the%20receiver%20reach%20its%20end%2C%20the%20returned%20collection%20has%20less%20elements.%0D%0A%09%22%0D%0A%0D%0A%09%7C%20start%20result%20stop%20%7C%0D%0A%09start%20%3A%3D%20self%20position.%0D%0A%09stop%20%3A%3D%20start%20+%20anInteger%20min%3A%20self%20readLimit.%0D%0A%09result%20%3A%3D%20self%20collection%20copyFrom%3A%20start%20+%201%20to%3A%20stop.%0D%0A%09self%20position%3A%20stop.%0D%0A%09%5Eresult"));
smalltalk.bind(smalltalk.StringStream,"peek",0
,function (){var self=this;return (self['@collection'].charAt(self.position()) || nil);;return self;}
,"reading",unescape("peek%0D%0A%09%22%20Return%20the%20next%20readable%20element%20from%20the%20receiver%20without%20advancing%20%28or%20nil%29.%20%22%0D%0A%0D%0A%09%5E%28collection%20%23charAt%3A%20self%20position%29%20%7C%7C%20nil"));
smalltalk.bind(smalltalk.StringStream,"peekForAll:",0
,function (aCollection){var $s8Ret$={name:"stReturn"};try{var self=this;((aCollection.isString()).mustBeBoolean()==true ? nil : (function(){return (function(){$s8Ret$.result=(function(){return smalltalk.superImplementor(smalltalk.StringStream,'peekForAll_').apply(self, [aCollection]);})();throw($s8Ret$)})();})());
var start = self.position();
for (var i=0;i<aCollection.length; i++){
if (self["@collection"].charCodeAt(start+i) != aCollection.charCodeAt(i)) return false;
}
;
self['@position']=self['@position']._plus(aCollection.length);
(function(){$s8Ret$.result=(function(){return true;})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"reading",unescape("peekForAll%3A%20aCollection%0D%0A%09%22%20Return%20true%20if%20the%20next%20readable%20elements%20from%20the%20receiver%20matches%20aCollection.%0D%0A%09Advance%20the%20receiver%20if%20the%20result%20is%20true.%0D%0A%09%22%0D%0A%0D%0A%09aCollection%20isString%20ifFalse%3A%20%5B%20%5Esuper%20peekForAll%3A%20aCollection%20%5D.%0D%0A%7B%27%09var%20start%20%3D%20self.position%28%29%3B%0D%0A%09for%20%28var%20i%3D0%3Bi%3CaCollection.length%3B%20i++%29%7B%0D%0A%09%09if%20%28self%5B%22@collection%22%5D.charCodeAt%28start+i%29%20%21%3D%20aCollection.charCodeAt%28i%29%29%20return%20false%3B%0D%0A%09%7D%0D%0A%27%7D.%09position%20%3A%3D%20position%20+%20aCollection%23length.%0D%0A%09%5Etrue"));
smalltalk.bind(smalltalk.String,",","_comma"
,function (aString){var self=this; if (nil.isNil_(aString)) return self+""; // we need this ugly patch for JSC under iOS
return self + aString.toString();return self;}
,"copying",unescape("%2C%20aString%0D%0A%09%22%20Return%20a%20copy%20of%20the%20receiver%20with%20aString%20appended.%20%22%0D%0A%0D%0A%7B%27%09if%20%28nil.isNil_%28aString%29%29%20return%20self+%22%22%3B%20//%20we%20need%20this%20ugly%20patch%20for%20JSC%20under%20iOS%0D%0A%09return%20self%20+%20aString.toString%28%29%27%7D"));
smalltalk.bind(smalltalk.String,"=","_eq"
,function (anObject){var self=this; if (nil.isNil_(anObject)) return false;
if (!(anObject.isString)) return false;
if (!(anObject.isString())) return false;
if (self == anObject) return true;
return ((""+self) == (""+anObject));
;return self;}
,"comparing",unescape("%3D%20anObject%0D%0A%20%20%20%20%22%20Return%20true%20if%20the%20receiver%20is%20equal%20to%20anObject.%20%22%0D%0A%0D%0A%7B%27%20%20if%20%28nil.isNil_%28anObject%29%29%20return%20false%3B%0D%0A%20%20%20%20if%20%28%21%28anObject.isString%29%29%20return%20false%3B%0D%0A%20%20%20%20if%20%28%21%28anObject.isString%28%29%29%29%20return%20false%3B%0D%0A%20%20%20%20if%20%28self%20%3D%3D%20anObject%29%20return%20true%3B%0D%0A%20%20%20%20return%20%28%28%22%22+self%29%20%3D%3D%20%28%22%22+anObject%29%29%3B%0D%0A%27%7D"));
smalltalk.bind(smalltalk.String,"asCharacterParser",0
,function (){var self=this;return smalltalk.PPCharacterParser.$$new().string_(self);;return self;}
,"Compiler-converting",unescape("asCharacterParser%0D%0A%09%22%20Return%20a%20parser%20on%20the%20characters%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5EPPCharacterParser%20new%20string%3A%20self"));
smalltalk.bind(smalltalk.String,"asChoiceParser",0
,function (){var self=this;return smalltalk.PPChoiceParser.withAll_(self.asArray().collect_((function(each){return each.asParser();})));;return self;}
,"Compiler-converting",unescape("asChoiceParser%0D%0A%09%22%20Return%20a%20parser%20of%20choices%20for%20each%20character%20the%20receiver.%20%22%0D%0A%0D%0A%09%5EPPChoiceParser%20withAll%3A%20%28self%20asArray%20collect%3A%20%5B%3Aeach%20%7C%20each%20asParser%20%5D%29"));
smalltalk.bind(smalltalk.String,"asJavascriptName",0
,function (){var $s8Ret$={name:"stReturn"};try{var self=this;((self.first()._eq("_")).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return self;})();throw($s8Ret$)})();})() : nil);
((smalltalk.String.reservedWords().includes_(self)).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return "$$"._comma(self);})();throw($s8Ret$)})();})() : nil);
(function(){$s8Ret$.result=(function(){return self;})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"converting",unescape("asJavascriptName%0D%0A%09%22%20Private%20-%20Return%20the%20receiver%20as%20a%20valid%20javascript%20name.%20%22%0D%0A%0D%0A%09self%20first%20%3D%20%24_%20ifTrue%3A%20%5B%20%5Eself%20%5D.%0D%0A%09%28String%20reservedWords%20includes%3A%20self%29%20ifTrue%3A%20%5B%20%5E%27%24%24%27%2Cself%20%5D.%0D%0A%09%5Eself"));
smalltalk.bind(smalltalk.String,"asNumber",0
,function (){var $s8Ret$={name:"stReturn"};try{var self=this;((self.includes_("r")).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return smalltalk.Number.readFrom_(self.readStream());})();throw($s8Ret$)})();})() : nil);
(function(){$s8Ret$.result=(function(){return Number(self);})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"converting",unescape("asNumber%0D%0A%09%22%20Return%20the%20receiver%20as%20a%20Number.%20%22%0D%0A%0D%0A%09%28self%20includes%3A%20%22%24r%22%27r%27%29%20ifTrue%3A%20%5B%0D%0A%09%09%5ENumber%20readFrom%3A%20self%20readStream%0D%0A%09%5D.%0D%0A%09%5E%23%20%23Number%3A%20self"));
smalltalk.bind(smalltalk.String,"asParser",0
,function (){var self=this;return smalltalk.PPStringParser.$$new().string_(self);;return self;}
,"Compiler-converting",unescape("asParser%0D%0A%09%22%20Return%20a%20parser%20on%20the%20receiver.%20%22%0D%0A%0D%0A%09%5EPPStringParser%20new%20string%3A%20self"));
smalltalk.bind(smalltalk.String,"asSelector",0
,function (){var $s8Ret$={name:"stReturn"};try{var self=this;var selector=nil;((self.isEmpty()).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return "$";})();throw($s8Ret$)})();})() : nil);
((self.match_(unescape("%5E%23"))).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return self.upTo_startingAt_(":", (2));})();throw($s8Ret$)})();})() : nil);
((self.isBackSlash()).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return "_bk";})();throw($s8Ret$)})();})() : nil);
return self
.replace(/:/g,"_")
.replace(/[+]/g,"_plus")
.replace(/-/g,"_minus")
.replace(/[*]/g,"_star")
.replace(/[/]/g,"_slash")
.replace(/[|]/g,"_bar")
.replace(/[&]/g,"_amp")
.replace(/>/g,"_gt")
.replace(/</g,"_lt")
.replace(/=/g,"_eq")
.replace(/,/g,"_comma")
.replace(/[@]/g,"_at")
.replace(/~/g,"_no")
.replace(/\\/g,"_bk")
.asJavascriptName();
;return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"converting",unescape("asSelector%0D%0A%09%22%20Private%20-%20Return%20the%20receiver%20as%20a%20valid%20javascript%20selector.%20%22%0D%0A%0D%0A%09%7C%20selector%20%7C%0D%0A%09self%20isEmpty%20ifTrue%3A%20%5B%20%5E%27%24%27%20%5D.%0D%0A%09%28self%20match%3A%20%27%5E%23%27%29%20ifTrue%3A%20%5B%20%5Eself%20upTo%3A%20%24%3A%20startingAt%3A%202%20%5D.%0D%0A%09self%20isBackSlash%20ifTrue%3A%20%5B%20%5E%27_bk%27%20%5D.%0D%0A%7B%27%09%20return%20self%0D%0A%09%09.replace%28/%3A/g%2C%22_%22%29%0D%0A%09%09.replace%28/%5B+%5D/g%2C%22_plus%22%29%0D%0A%09%09.replace%28/-/g%2C%22_minus%22%29%0D%0A%09%09.replace%28/%5B*%5D/g%2C%22_star%22%29%0D%0A%09%09.replace%28/%5B/%5D/g%2C%22_slash%22%29%0D%0A%09%09.replace%28/%5B%7C%5D/g%2C%22_bar%22%29%0D%0A%09%09.replace%28/%5B%26%5D/g%2C%22_amp%22%29%0D%0A%09%09.replace%28/%3E/g%2C%22_gt%22%29%0D%0A%09%09.replace%28/%3C/g%2C%22_lt%22%29%0D%0A%09%09.replace%28/%3D/g%2C%22_eq%22%29%0D%0A%09%09.replace%28/%2C/g%2C%22_comma%22%29%0D%0A%09%09.replace%28/%5B@%5D/g%2C%22_at%22%29%0D%0A%09%09.replace%28/%7E/g%2C%22_no%22%29%0D%0A%09%09.replace%28/%5C%5C/g%2C%22_bk%22%29%0D%0A%09%09.asJavascriptName%28%29%3B%0D%0A%09%27%7D"));
smalltalk.bind(smalltalk.String,"at:",0
,function (anIndex){var self=this;return self.charAt(anIndex._minus((1)));;return self;}
,"accessing",unescape("at%3A%20anIndex%0D%0A%09%22%20Return%20the%20receiver%20at%20anIndex.%20%22%0D%0A%0D%0A%09%5Eself%20%23charAt%3A%20anIndex%20-%201"));
smalltalk.bind(smalltalk.String,"copyFrom:to:",0
,function (anIndex,anotherIndex){var self=this;return self.substring(anIndex._minus((1)), anotherIndex);;return self;}
,"copying",unescape("copyFrom%3A%20anIndex%20to%3A%20anotherIndex%0D%0A%09%22%20Return%20the%20receiver%20between%20limits.%20%22%0D%0A%0D%0A%09%5Eself%20%23substring%3A%20anIndex%20-%201%20to%3A%20anotherIndex"));
smalltalk.bind(smalltalk.String,"doIt",0
,function (){var self=this;return self.smalltalk().compilerSupport().doIt_(self);;return self;}
,"Tools-evaluating",unescape("doIt%0D%0A%09%22%20Return%20the%20result%20of%20evaluating%20the%20receiver%20or%20the%20error%20occurred%20during%20compilation%20or%20evaluation.%20%22%0D%0A%0D%0A%09%5Eself%20smalltalk%20compilerSupport%20doIt%3A%20self"));
smalltalk.bind(smalltalk.String,"do:",0
,function (aBlock){var self=this; for(var i=0;i<self.length;i++){aBlock(self.charAt(i));};return self;}
,"enumerating",unescape("do%3A%20aBlock%0D%0A%09%22%20Evaluate%20aBlock%20with%20the%20contents%20of%20the%20receiver.%20%22%0D%0A%0D%0A%7B%27%09for%28var%20i%3D0%3Bi%3Cself.length%3Bi++%29%7BaBlock%28self.charAt%28i%29%29%3B%7D%27%7D"));
smalltalk.bind(smalltalk.String,"escaped",0
,function (){var self=this;return escape(self);;return self;}
,"converting",unescape("escaped%0D%0A%09%22%20Return%20the%20receiver%20with%20escape%20codes.%20%22%0D%0A%0D%0A%09%5E%23%20%23escape%3A%20self"));
smalltalk.bind(smalltalk.String,"escapedCode",0
,function (){var $s8Ret$={name:"stReturn"};try{var self=this;var escaped=nil;escaped=self.escaped();
((escaped._eq(self)).mustBeBoolean()==true ? (function(){return (function(){$s8Ret$.result=(function(){return unescape("%22")._comma(escaped)._comma(unescape("%22"));})();throw($s8Ret$)})();})() : nil);
(function(){$s8Ret$.result=(function(){return unescape("unescape%28%22")._comma(escaped)._comma(unescape("%22%29"));})();throw($s8Ret$)})();return self;} catch($$ex) {if($$ex === $s8Ret$){return $$ex.result;} throw($$ex);}}
,"converting",unescape("escapedCode%0D%0A%09%22%20Return%20the%20code%20to%20reproduce%20receiver%20from%20%28javascript%29%20code.%20%22%0D%0A%0D%0A%09%7C%20escaped%20%7C%0D%0A%09escaped%20%3A%3D%20self%20escaped.%0D%0A%09escaped%20%3D%20self%20ifTrue%3A%20%5B%20%5E%24%22%20%2Cescaped%20%2C%24%22%20%5D.%0D%0A%09%5E%27unescape%28%22%27%20%2Cescaped%20%2C%27%22%29%27"));
smalltalk.bind(smalltalk.String,"includes:",0
,function (anObject){var self=this;return self.indexOf_(anObject)._gt((0));;return self;}
,"testing",unescape("includes%3A%20anObject%0D%0A%09%22%20Return%20true%20if%20anObject%20is%20in%20receiver%27s%20contents.%20%22%0D%0A%0D%0A%09%5E%28self%20indexOf%3A%20anObject%29%20%3E%200"));
smalltalk.bind(smalltalk.String,"indexOf:",0
,function (aString){var self=this;return self.indexOf(aString)._plus((1));;return self;}
,"accessing",unescape("indexOf%3A%20aString%0D%0A%09%22%20Return%20the%20position%20of%20first%20occurrence%20of%20aString%20%28or%200%20if%20not%20present%29.%20%22%0D%0A%0D%0A%09%5E%28self%20%23indexOf%3A%20aString%29%20+%201"));
smalltalk.bind(smalltalk.String,"isBackSlash",0
,function (){var self=this;return self._eq(unescape("%5C"));;return self;}
,"testing",unescape("isBackSlash%0D%0A%09%22%20Return%20true%20if%20the%20receiver%20is%20a%20back-slash%20string.%20%22%0D%0A%0D%0A%09%5Eself%20%3D%20%24%5C%20"));
smalltalk.bind(smalltalk.String,"isString",0
,function (){var self=this;return true;;return self;}
,"testing",unescape("isString%0D%0A%09%22%20Return%20true%20if%20the%20receiver%20is%20a%20String.%20%22%0D%0A%0D%0A%09%5Etrue"));
smalltalk.bind(smalltalk.String,"match:",0
,function (aRegexp){var self=this; return self.search(aRegexp) != -1;return self;}
,unescape("regular%20expressions"),unescape("match%3A%20aRegexp%0D%0A%09%22%20Return%20the%20match%20index%20of%20aRegexp%20in%20the%20receiver.%20%22%0D%0A%0D%0A%7B%27%09return%20self.search%28aRegexp%29%20%21%3D%20-1%27%7D"));
smalltalk.bind(smalltalk.String,"printString",0
,function (){var self=this;return unescape("%27")._comma(self)._comma(unescape("%27"));;return self;}
,"printing",unescape("printString%0D%0A%09%22%20Return%20the%20printable%20representation%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5E%27%27%27%27%2C%20self%2C%20%27%27%27%27"));
smalltalk.bind(smalltalk.String,"size",0
,function (){var self=this;return self.length;;return self;}
,"accessing",unescape("size%0D%0A%09%22%20Return%20the%20size%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%23length"));
smalltalk.bind(smalltalk.String.$klass,"cr",0
,function (){var self=this;return "\r";;return self;}
,"accessing",unescape("cr%0D%0A%09%22%20Return%20the%20singular%20instance.%20%22%0D%0A%0D%0A%09%5E%7B%27%22%5Cr%22%27%7D"));
smalltalk.bind(smalltalk.String.$klass,"crlf",0
,function (){var self=this;return "\r\n";;return self;}
,"accessing",unescape("crlf%0D%0A%09%22%20Return%20the%20singular%20instance.%20%22%0D%0A%0D%0A%09%5E%7B%27%22%5Cr%5Cn%22%27%7D"));
smalltalk.bind(smalltalk.String.$klass,"doItSelector",0
,function (){var self=this;return "s8DoIt";;return self;}
,"doIt",unescape("doItSelector%0D%0A%09%22%20Return%20the%20selector%20to%20use%20for%20doIt%20evaluations.%0D%0A%09Warning%3A%20this%20selector%20will%20not%20be%20dump%20on%20image%20nor%20change%20log%20expressions.%0D%0A%09%22%0D%0A%0D%0A%09%5E%23s8DoIt"));
smalltalk.bind(smalltalk.String.$klass,"lf",0
,function (){var self=this;return "\n";;return self;}
,"accessing",unescape("lf%0D%0A%09%22%20Return%20the%20singular%20instance.%20%22%0D%0A%0D%0A%09%5E%7B%27%22%5Cn%22%27%7D"));
smalltalk.bind(smalltalk.String.$klass,"reservedWords",0
,function (){var self=this;return ["abstract", "as", "boolean", "break", "byte", "case", "catch", "char", "class", "continue", "const", "debugger", "default", "delete", "do", "double", "else", "enum", "export", "extends", false, "final", "finally", "float", "for", "function", "goto", "if", "implements", "import", "in", "instanceof", "int", "interface", "is", "long", "namespace", "native", "new", "null", "package", "private", "protected", "public", "return", "short", "static", "super", "switch", "synchronized", "this", "throw", "throws", "transient", true, "try", "typeof", "use", "var", "void", "volatile", "while", "with"];;return self;}
,"private",unescape("reservedWords%0D%0A%09%22%20Private%20-%20Return%20the%20reserved%20names%20of%20javascript%20language.%20%22%0D%0A%0D%0A%09%5E%23%28%0D%0A%09abstract%09as%09%09boolean%09%09break%09%09byte%0D%0A%09case%09%09catch%09%09char%09%09class%09%09continue%0D%0A%09const%09%09debugger%09default%09%09delete%09%09do%0D%0A%09double%09%09else%09%09enum%09%09export%09%09extends%0D%0A%09false%09%09final%09%09finally%09%09float%09%09for%0D%0A%09function%09goto%09%09if%09%09implements%09import%0D%0A%09in%09%09instanceof%09int%09%09interface%09is%0D%0A%09long%09%09namespace%09native%09%09new%09%09null%0D%0A%09package%09%09private%09%09protected%09public%09%09return%0D%0A%09short%09%09static%09%09super%09%09switch%09%09synchronized%0D%0A%09this%09%09throw%09%09throws%09%09transient%09true%0D%0A%09try%09%09typeof%09%09use%09%09var%09%09void%0D%0A%09volatile%09while%09%09with%0D%0A%09%29"));
smalltalk.bind(smalltalk.String.$klass,"space",0
,function (){var self=this;return " ";;return self;}
,"accessing",unescape("space%0D%0A%09%22%20Return%20the%20singular%20instance.%20%22%0D%0A%0D%0A%09%5E%7B%27%22%20%22%27%7D"));
smalltalk.bind(smalltalk.String.$klass,"streamClass",0
,function (){var self=this;return smalltalk.StringStream;;return self;}
,"accessing",unescape("streamClass%0D%0A%09%22%20Return%20the%20streamming%20support%20for%20the%20receiver%27s%20instances.%20%22%0D%0A%0D%0A%09%5EStringStream"));
smalltalk.bind(smalltalk.String.$klass,"tab",0
,function (){var self=this;return "\t";;return self;}
,"accessing",unescape("tab%0D%0A%09%22%20Return%20the%20singular%20instance.%20%22%0D%0A%0D%0A%09%5E%7B%27%22%5Ct%22%27%7D"));
smalltalk.bind(smalltalk.SystemManager,"aboutToBind:to:",0
,function (aMethod,aClass){var self=this;return self.triggerEvent_with_with_("aboutToBind:to:", aMethod, aClass);;return self;}
,"tracking-methods",unescape("aboutToBind%3A%20aMethod%20to%3A%20aClass%0D%0A%09%22%20Private%20-%20The%20method%20will%20be%20bound%20to%20aClass.%20%22%0D%0A%0D%0A%09%5Eself%20triggerEvent%3A%20%23aboutToBind%3Ato%3A%20with%3A%20aMethod%20with%3A%20aClass%20"));
smalltalk.bind(smalltalk.SystemManager,"aboutToRemove:from:",0
,function (aMethod,aClass){var self=this;return self.triggerEvent_with_with_("aboutToRemove:from:", aMethod, aClass);;return self;}
,"tracking-methods",unescape("aboutToRemove%3A%20aMethod%20from%3A%20aClass%0D%0A%09%22%20Private%20-%20The%20method%20will%20be%20removed%20from%20aClass.%20%22%0D%0A%0D%0A%09%5Eself%20triggerEvent%3A%20%23aboutToRemove%3Afrom%3A%20with%3A%20aMethod%20with%3A%20aClass%20"));
smalltalk.bind(smalltalk.SystemManager,"methodBound:to:",0
,function (aMethod,aClass){var self=this;return self.triggerEvent_with_with_("methodBound:to:", aMethod, aClass);;return self;}
,"tracking-methods",unescape("methodBound%3A%20aMethod%20to%3A%20aClass%0D%0A%09%22%20Private%20-%20The%20method%20has%20been%20bound%20to%20aClass.%20%22%0D%0A%0D%0A%09%5Eself%20triggerEvent%3A%20%23methodBound%3Ato%3A%20with%3A%20aMethod%20with%3A%20aClass%20"));
smalltalk.bind(smalltalk.SystemManager,"methodRemoved:from:",0
,function (aMethod,aClass){var self=this;return self.triggerEvent_with_with_("methodRemoved:from:", aMethod, aClass);;return self;}
,"tracking-methods",unescape("methodRemoved%3A%20aMethod%20from%3A%20aClass%0D%0A%09%22%20Private%20-%20The%20method%20has%20been%20removed%20from%20aClass.%20%22%0D%0A%0D%0A%09%5Eself%20triggerEvent%3A%20%23methodRemoved%3Afrom%3A%20with%3A%20aMethod%20with%3A%20aClass%20"));
smalltalk.bind(smalltalk.SystemManager.$klass,"currentOrNil",0
,function (){var self=this;return self.classVariableAt_ifAbsent_("Current", (function(){return nil;}));;return self;}
,"singleton",unescape("currentOrNil%0D%0A%09%22%20Return%20the%20current%20instance%20of%20the%20receiver.%20%22%0D%0A%0D%0A%09%5Eself%20classVariableAt%3A%20%23Current%20ifAbsent%3A%20%5B%20nil%20%5D"));
smalltalk.bind(smalltalk.ValueNode,"accept:",0
,function (aVisitor){var self=this;aVisitor.visitValueNode_(self);return self;}
,"visiting",unescape("accept%3A%20aVisitor%0D%0A%09aVisitor%20visitValueNode%3A%20self"));
smalltalk.bind(smalltalk.ValueNode,"value",0
,function (){var self=this;return self['@value'];;return self;}
,"accessing",unescape("value%0D%0A%09%5Evalue"));
smalltalk.bind(smalltalk.ValueNode,"value:",0
,function (anObject){var self=this;self['@value']=anObject;return self;}
,"accessing",unescape("value%3A%20anObject%0D%0A%09value%20%3A%3D%20anObject"));