smalltalk.addPackage('Kernel-Collections', {}); smalltalk.addClass('Association', smalltalk.Object, ['key', 'value'], 'Kernel-Collections'); smalltalk.addMethod( unescape('__eq'), smalltalk.method({ selector: unescape('%3D'), category: 'comparing', fn: function (anAssociation) { var self=this; return smalltalk.send(smalltalk.send(smalltalk.send(self, "_class", []), "__eq", [smalltalk.send(anAssociation, "_class", [])]), "_and_", [(function(){return smalltalk.send(smalltalk.send(smalltalk.send(self, "_key", []), "__eq", [smalltalk.send(anAssociation, "_key", [])]), "_and_", [(function(){return smalltalk.send(smalltalk.send(self, "_value", []), "__eq", [smalltalk.send(anAssociation, "_value", [])]);})]);})]); return self;}, args: ["anAssociation"], source: unescape('%3D%20anAssociation%0A%09%5Eself%20class%20%3D%20anAssociation%20class%20and%3A%20%5B%0A%09%20%20%20%20self%20key%20%3D%20anAssociation%20key%20and%3A%20%5B%0A%09%09self%20value%20%3D%20anAssociation%20value%5D%5D'), messageSends: ["and:", unescape("%3D"), "class", "key", "value"], referencedClasses: [] }), smalltalk.Association); smalltalk.addMethod( unescape('_key_'), smalltalk.method({ selector: unescape('key%3A'), category: 'accessing', fn: function (aKey) { var self=this; (self['@key']=aKey); return self;}, args: ["aKey"], source: unescape('key%3A%20aKey%0A%09key%20%3A%3D%20aKey'), messageSends: [], referencedClasses: [] }), smalltalk.Association); smalltalk.addMethod( unescape('_key'), smalltalk.method({ selector: unescape('key'), category: 'accessing', fn: function () { var self=this; return self['@key']; return self;}, args: [], source: unescape('key%0A%09%5Ekey'), messageSends: [], referencedClasses: [] }), smalltalk.Association); smalltalk.addMethod( unescape('_value_'), smalltalk.method({ selector: unescape('value%3A'), category: 'accessing', fn: function (aValue) { var self=this; (self['@value']=aValue); return self;}, args: ["aValue"], source: unescape('value%3A%20aValue%0A%09value%20%3A%3D%20aValue'), messageSends: [], referencedClasses: [] }), smalltalk.Association); smalltalk.addMethod( unescape('_value'), smalltalk.method({ selector: unescape('value'), category: 'accessing', fn: function () { var self=this; return self['@value']; return self;}, args: [], source: unescape('value%0A%09%5Evalue'), messageSends: [], referencedClasses: [] }), smalltalk.Association); smalltalk.addMethod( unescape('_storeOn_'), smalltalk.method({ selector: unescape('storeOn%3A'), category: 'comparing', fn: function (aStream) { var self=this; smalltalk.send(self['@key'], "_storeOn_", [aStream]); smalltalk.send(aStream, "_nextPutAll_", [unescape("-%3E")]); smalltalk.send(self['@value'], "_storeOn_", [aStream]); return self;}, args: ["aStream"], source: unescape('storeOn%3A%20aStream%0A%09%22Store%20in%20the%20format%20%28key-%3Evalue%29%22%0A%0A%09%22aStream%20nextPutAll%3A%20%27%28%27.%22%0A%09key%20storeOn%3A%20aStream.%0A%09aStream%20nextPutAll%3A%20%27-%3E%27.%0A%09value%20storeOn%3A%20aStream.%0A%09%22aStream%20nextPutAll%3A%20%27%29%27%22'), messageSends: ["storeOn:", "nextPutAll:"], referencedClasses: [] }), smalltalk.Association); smalltalk.addMethod( unescape('_key_value_'), smalltalk.method({ selector: unescape('key%3Avalue%3A'), category: 'instance creation', fn: function (aKey, aValue) { var self=this; return (function($rec){smalltalk.send($rec, "_key_", [aKey]);smalltalk.send($rec, "_value_", [aValue]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", [])); return self;}, args: ["aKey", "aValue"], source: unescape('key%3A%20aKey%20value%3A%20aValue%0A%09%20%20%20%20%5Eself%20new%0A%09%09key%3A%20aKey%3B%0A%09%09value%3A%20aValue%3B%0A%09%09yourself'), messageSends: ["key:", "value:", "yourself", "new"], referencedClasses: [] }), smalltalk.Association.klass); smalltalk.addClass('Stream', smalltalk.Object, ['collection', 'position', 'streamSize'], 'Kernel-Collections'); smalltalk.addMethod( unescape('_collection'), smalltalk.method({ selector: unescape('collection'), category: 'accessing', fn: function () { var self=this; return self['@collection']; return self;}, args: [], source: unescape('collection%0A%09%5Ecollection'), messageSends: [], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_setCollection_'), smalltalk.method({ selector: unescape('setCollection%3A'), category: 'accessing', fn: function (aCollection) { var self=this; (self['@collection']=aCollection); return self;}, args: ["aCollection"], source: unescape('setCollection%3A%20aCollection%0A%09collection%20%3A%3D%20aCollection'), messageSends: [], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_position'), smalltalk.method({ selector: unescape('position'), category: 'accessing', fn: function () { var self=this; return (($receiver = self['@position']) == nil || $receiver == undefined) ? (function(){return (self['@position']=(0));})() : $receiver; return self;}, args: [], source: unescape('position%0A%09%5Eposition%20ifNil%3A%20%5Bposition%20%3A%3D%200%5D'), messageSends: ["ifNil:"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_position_'), smalltalk.method({ selector: unescape('position%3A'), category: 'accessing', fn: function (anInteger) { var self=this; (self['@position']=anInteger); return self;}, args: ["anInteger"], source: unescape('position%3A%20anInteger%0A%09position%20%3A%3D%20anInteger'), messageSends: [], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_streamSize'), smalltalk.method({ selector: unescape('streamSize'), category: 'accessing', fn: function () { var self=this; return self['@streamSize']; return self;}, args: [], source: unescape('streamSize%0A%09%5EstreamSize'), messageSends: [], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_setStreamSize_'), smalltalk.method({ selector: unescape('setStreamSize%3A'), category: 'accessing', fn: function (anInteger) { var self=this; (self['@streamSize']=anInteger); return self;}, args: ["anInteger"], source: unescape('setStreamSize%3A%20anInteger%0A%09streamSize%20%3A%3D%20anInteger'), messageSends: [], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_contents'), smalltalk.method({ selector: unescape('contents'), category: 'accessing', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_collection", []), "_copyFrom_to_", [(1), smalltalk.send(self, "_streamSize", [])]); return self;}, args: [], source: unescape('contents%0A%09%5Eself%20collection%0A%09%20%20%20%20copyFrom%3A%201%20%0A%09%20%20%20%20to%3A%20self%20streamSize'), messageSends: ["copyFrom:to:", "collection", "streamSize"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_size'), smalltalk.method({ selector: unescape('size'), category: 'accessing', fn: function () { var self=this; return smalltalk.send(self, "_streamSize", []); return self;}, args: [], source: unescape('size%0A%09%5Eself%20streamSize'), messageSends: ["streamSize"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_reset'), smalltalk.method({ selector: unescape('reset'), category: 'actions', fn: function () { var self=this; smalltalk.send(self, "_position_", [(0)]); return self;}, args: [], source: unescape('reset%0A%09self%20position%3A%200'), messageSends: ["position:"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_close'), smalltalk.method({ selector: unescape('close'), category: 'actions', fn: function () { var self=this; return self;}, args: [], source: unescape('close'), messageSends: [], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_flush'), smalltalk.method({ selector: unescape('flush'), category: 'actions', fn: function () { var self=this; return self;}, args: [], source: unescape('flush'), messageSends: [], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_resetContents'), smalltalk.method({ selector: unescape('resetContents'), category: 'actions', fn: function () { var self=this; smalltalk.send(self, "_reset", []); smalltalk.send(self, "_setStreamSize_", [(0)]); return self;}, args: [], source: unescape('resetContents%0A%09self%20reset.%0A%09self%20setStreamSize%3A%200'), messageSends: ["reset", "setStreamSize:"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_do_'), smalltalk.method({ selector: unescape('do%3A'), category: 'enumerating', fn: function (aBlock) { var self=this; (function(){while(!(function(){return smalltalk.send(self, "_atEnd", []);})()) {(function(){return smalltalk.send(aBlock, "_value_", [smalltalk.send(self, "_next", [])]);})()}})(); return self;}, args: ["aBlock"], source: unescape('do%3A%20aBlock%0A%09%5Bself%20atEnd%5D%20whileFalse%3A%20%5BaBlock%20value%3A%20self%20next%5D'), messageSends: ["whileFalse:", "atEnd", "value:", "next"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_setToEnd'), smalltalk.method({ selector: unescape('setToEnd'), category: 'positioning', fn: function () { var self=this; smalltalk.send(self, "_position_", [smalltalk.send(self, "_size", [])]); return self;}, args: [], source: unescape('setToEnd%0A%09self%20position%3A%20self%20size'), messageSends: ["position:", "size"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_skip_'), smalltalk.method({ selector: unescape('skip%3A'), category: 'positioning', fn: function (anInteger) { var self=this; smalltalk.send(self, "_position_", [smalltalk.send(((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +anInteger : smalltalk.send($receiver, "__plus", [anInteger])), "_min_max_", [smalltalk.send(self, "_size", []), (0)])]); return self;}, args: ["anInteger"], source: unescape('skip%3A%20anInteger%0A%09self%20position%3A%20%28%28self%20position%20+%20anInteger%29%20min%3A%20self%20size%20max%3A%200%29'), messageSends: ["position:", "min:max:", unescape("+"), "position", "size"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_next'), smalltalk.method({ selector: unescape('next'), category: 'reading', fn: function () { var self=this; return ((($receiver = smalltalk.send(self, "_atEnd", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return nil;})() : (function(){smalltalk.send(self, "_position_", [((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]))]);return smalltalk.send(self['@collection'], "_at_", [smalltalk.send(self, "_position", [])]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return nil;}), (function(){smalltalk.send(self, "_position_", [((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]))]);return smalltalk.send(self['@collection'], "_at_", [smalltalk.send(self, "_position", [])]);})])); return self;}, args: [], source: unescape('next%0A%09%5Eself%20atEnd%20%0A%09%09ifTrue%3A%20%5Bnil%5D%0A%09%09ifFalse%3A%20%5B%0A%09%09%09self%20position%3A%20self%20position%20+%201.%20%0A%09%09%09collection%20at%3A%20self%20position%5D'), messageSends: ["ifTrue:ifFalse:", "atEnd", "position:", unescape("+"), "position", "at:"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_next_'), smalltalk.method({ selector: unescape('next%3A'), category: 'reading', fn: function (anInteger) { var self=this; var tempCollection=nil; (tempCollection=smalltalk.send(smalltalk.send(smalltalk.send(self, "_collection", []), "_class", []), "_new", [])); smalltalk.send(anInteger, "_timesRepeat_", [(function(){return ((($receiver = smalltalk.send(self, "_atEnd", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(tempCollection, "_add_", [smalltalk.send(self, "_next", [])]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(tempCollection, "_add_", [smalltalk.send(self, "_next", [])]);})]));})]); return tempCollection; return self;}, args: ["anInteger"], source: unescape('next%3A%20anInteger%0A%09%7C%20tempCollection%20%7C%0A%09tempCollection%20%3A%3D%20self%20collection%20class%20new.%0A%09anInteger%20timesRepeat%3A%20%5B%0A%09%20%20%20%20self%20atEnd%20ifFalse%3A%20%5B%0A%09%09tempCollection%20add%3A%20self%20next%5D%5D.%0A%09%5EtempCollection'), messageSends: ["new", "class", "collection", "timesRepeat:", "ifFalse:", "atEnd", "add:", "next"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_nextPut_'), smalltalk.method({ selector: unescape('nextPut%3A'), category: 'writing', fn: function (anObject) { var self=this; smalltalk.send(self, "_position_", [((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]))]); smalltalk.send(smalltalk.send(self, "_collection", []), "_at_put_", [smalltalk.send(self, "_position", []), anObject]); smalltalk.send(self, "_setStreamSize_", [smalltalk.send(smalltalk.send(self, "_streamSize", []), "_max_", [smalltalk.send(self, "_position", [])])]); return self;}, args: ["anObject"], source: unescape('nextPut%3A%20anObject%0A%09self%20position%3A%20self%20position%20+%201.%0A%09self%20collection%20at%3A%20self%20position%20put%3A%20anObject.%0A%09self%20setStreamSize%3A%20%28self%20streamSize%20max%3A%20self%20position%29'), messageSends: ["position:", unescape("+"), "position", "at:put:", "collection", "setStreamSize:", "max:", "streamSize"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_nextPutAll_'), smalltalk.method({ selector: unescape('nextPutAll%3A'), category: 'writing', fn: function (aCollection) { var self=this; smalltalk.send(aCollection, "_do_", [(function(each){return smalltalk.send(self, "_nextPut_", [each]);})]); return self;}, args: ["aCollection"], source: unescape('nextPutAll%3A%20aCollection%0A%09aCollection%20do%3A%20%5B%3Aeach%20%7C%0A%09%20%20%20%20self%20nextPut%3A%20each%5D'), messageSends: ["do:", "nextPut:"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_peek'), smalltalk.method({ selector: unescape('peek'), category: 'reading', fn: function () { var self=this; return ((($receiver = smalltalk.send(self, "_atEnd", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(smalltalk.send(self, "_collection", []), "_at_", [((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]))]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(smalltalk.send(self, "_collection", []), "_at_", [((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]))]);})])); return self;}, args: [], source: unescape('peek%0A%09%5Eself%20atEnd%20ifFalse%3A%20%5B%0A%09%20%20%20%20self%20collection%20at%3A%20self%20position%20+%201%5D'), messageSends: ["ifFalse:", "atEnd", "at:", "collection", unescape("+"), "position"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_atEnd'), smalltalk.method({ selector: unescape('atEnd'), category: 'testing', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_position", []), "__eq", [smalltalk.send(self, "_size", [])]); return self;}, args: [], source: unescape('atEnd%0A%09%5Eself%20position%20%3D%20self%20size'), messageSends: [unescape("%3D"), "position", "size"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_atStart'), smalltalk.method({ selector: unescape('atStart'), category: 'testing', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_position", []), "__eq", [(0)]); return self;}, args: [], source: unescape('atStart%0A%09%5Eself%20position%20%3D%200'), messageSends: [unescape("%3D"), "position"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_isEmpty'), smalltalk.method({ selector: unescape('isEmpty'), category: 'testing', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_size", []), "__eq", [(0)]); return self;}, args: [], source: unescape('isEmpty%0A%09%5Eself%20size%20%3D%200'), messageSends: [unescape("%3D"), "size"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_on_'), smalltalk.method({ selector: unescape('on%3A'), category: 'instance creation', fn: function (aCollection) { var self=this; return (function($rec){smalltalk.send($rec, "_setCollection_", [aCollection]);smalltalk.send($rec, "_setStreamSize_", [smalltalk.send(aCollection, "_size", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", [])); return self;}, args: ["aCollection"], source: unescape('on%3A%20aCollection%0A%09%20%20%20%20%5Eself%20new%20%0A%09%09setCollection%3A%20aCollection%3B%0A%09%09setStreamSize%3A%20aCollection%20size%3B%0A%09%09yourself'), messageSends: ["setCollection:", "setStreamSize:", "size", "yourself", "new"], referencedClasses: [] }), smalltalk.Stream.klass); smalltalk.addClass('RegularExpression', smalltalk.Object, [], 'Kernel-Collections'); smalltalk.addMethod( unescape('_compile_'), smalltalk.method({ selector: unescape('compile%3A'), category: 'evaluating', fn: function (aString) { var self=this; return self.compile(aString); return self;}, args: ["aString"], source: unescape('compile%3A%20aString%0A%09%3Creturn%20self.compile%28aString%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.RegularExpression); smalltalk.addMethod( unescape('_exec_'), smalltalk.method({ selector: unescape('exec%3A'), category: 'evaluating', fn: function (aString) { var self=this; return self.exec(aString) || nil; return self;}, args: ["aString"], source: unescape('exec%3A%20aString%0A%09%3Creturn%20self.exec%28aString%29%20%7C%7C%20nil%3E'), messageSends: [], referencedClasses: [] }), smalltalk.RegularExpression); smalltalk.addMethod( unescape('_test_'), smalltalk.method({ selector: unescape('test%3A'), category: 'evaluating', fn: function (aString) { var self=this; return self.test(aString); return self;}, args: ["aString"], source: unescape('test%3A%20aString%0A%09%3Creturn%20self.test%28aString%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.RegularExpression); smalltalk.addMethod( unescape('_fromString_flag_'), smalltalk.method({ selector: unescape('fromString%3Aflag%3A'), category: 'instance creation', fn: function (aString, anotherString) { var self=this; return new RegExp(aString, anotherString); return self;}, args: ["aString", "anotherString"], source: unescape('fromString%3A%20aString%20flag%3A%20anotherString%0A%09%3Creturn%20new%20RegExp%28aString%2C%20anotherString%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.RegularExpression.klass); smalltalk.addMethod( unescape('_fromString_'), smalltalk.method({ selector: unescape('fromString%3A'), category: 'instance creation', fn: function (aString) { var self=this; return smalltalk.send(self, "_fromString_flag_", [aString, ""]); return self;}, args: ["aString"], source: unescape('fromString%3A%20aString%0A%09%20%20%20%20%5Eself%20fromString%3A%20aString%20flag%3A%20%27%27'), messageSends: ["fromString:flag:"], referencedClasses: [] }), smalltalk.RegularExpression.klass); smalltalk.addClass('Collection', smalltalk.Object, [], 'Kernel-Collections'); smalltalk.addMethod( unescape('_size'), smalltalk.method({ selector: unescape('size'), category: 'accessing', fn: function () { var self=this; smalltalk.send(self, "_subclassResponsibility", []); return self;}, args: [], source: unescape('size%0A%09self%20subclassResponsibility'), messageSends: ["subclassResponsibility"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_readStream'), smalltalk.method({ selector: unescape('readStream'), category: 'accessing', fn: function () { var self=this; return smalltalk.send(self, "_stream", []); return self;}, args: [], source: unescape('readStream%0A%09%5Eself%20stream'), messageSends: ["stream"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_writeStream'), smalltalk.method({ selector: unescape('writeStream'), category: 'accessing', fn: function () { var self=this; return smalltalk.send(self, "_stream", []); return self;}, args: [], source: unescape('writeStream%0A%09%5Eself%20stream'), messageSends: ["stream"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_stream'), smalltalk.method({ selector: unescape('stream'), category: 'accessing', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_streamClass", []), "_on_", [self]); return self;}, args: [], source: unescape('stream%0A%09%5Eself%20streamClass%20on%3A%20self'), messageSends: ["on:", "streamClass"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_streamClass'), smalltalk.method({ selector: unescape('streamClass'), category: 'accessing', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_class", []), "_streamClass", []); return self;}, args: [], source: unescape('streamClass%0A%09%5Eself%20class%20streamClass'), messageSends: ["streamClass", "class"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_add_'), smalltalk.method({ selector: unescape('add%3A'), category: 'adding/removing', fn: function (anObject) { var self=this; smalltalk.send(self, "_subclassResponsibility", []); return self;}, args: ["anObject"], source: unescape('add%3A%20anObject%0A%09self%20subclassResponsibility'), messageSends: ["subclassResponsibility"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_addAll_'), smalltalk.method({ selector: unescape('addAll%3A'), category: 'adding/removing', fn: function (aCollection) { var self=this; smalltalk.send(aCollection, "_do_", [(function(each){return smalltalk.send(self, "_add_", [each]);})]); return aCollection; return self;}, args: ["aCollection"], source: unescape('addAll%3A%20aCollection%0A%09aCollection%20do%3A%20%5B%3Aeach%20%7C%0A%09%20%20%20%20self%20add%3A%20each%5D.%0A%09%5EaCollection'), messageSends: ["do:", "add:"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('__comma'), smalltalk.method({ selector: unescape('%2C'), category: 'copying', fn: function (aCollection) { var self=this; return (function($rec){smalltalk.send($rec, "_addAll_", [aCollection]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_copy", [])); return self;}, args: ["aCollection"], source: unescape('%2C%20aCollection%0A%09%5Eself%20copy%20%0A%09%20%20%20%20addAll%3A%20aCollection%3B%20%0A%09%20%20%20%20yourself'), messageSends: ["addAll:", "yourself", "copy"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_copyWith_'), smalltalk.method({ selector: unescape('copyWith%3A'), category: 'copying', fn: function (anObject) { var self=this; return (function($rec){smalltalk.send($rec, "_add_", [anObject]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_copy", [])); return self;}, args: ["anObject"], source: unescape('copyWith%3A%20anObject%0A%09%5Eself%20copy%20add%3A%20anObject%3B%20yourself'), messageSends: ["add:", "yourself", "copy"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_copyWithAll_'), smalltalk.method({ selector: unescape('copyWithAll%3A'), category: 'copying', fn: function (aCollection) { var self=this; return (function($rec){smalltalk.send($rec, "_addAll_", [aCollection]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_copy", [])); return self;}, args: ["aCollection"], source: unescape('copyWithAll%3A%20aCollection%0A%09%5Eself%20copy%20addAll%3A%20aCollection%3B%20yourself'), messageSends: ["addAll:", "yourself", "copy"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_asArray'), smalltalk.method({ selector: unescape('asArray'), category: 'converting', fn: function () { var self=this; return smalltalk.send((smalltalk.Array || Array), "_withAll_", [self]); return self;}, args: [], source: unescape('asArray%0A%09%5EArray%20withAll%3A%20self'), messageSends: ["withAll:"], referencedClasses: ["Array"] }), smalltalk.Collection); smalltalk.addMethod( unescape('_do_'), smalltalk.method({ selector: unescape('do%3A'), category: 'enumerating', fn: function (aBlock) { var self=this; for(var i=0;i aString._asString(); return self;}, args: ["aString"], source: unescape('%3E%20aString%0A%09%3Creturn%20String%28self%29%20%3E%3E%20aString._asString%28%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('__lt'), smalltalk.method({ selector: unescape('%3C'), category: 'comparing', fn: function (aString) { var self=this; return String(self) < aString._asString(); return self;}, args: ["aString"], source: unescape('%3C%20aString%0A%09%3Creturn%20String%28self%29%20%3C%20aString._asString%28%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('__gt_eq'), smalltalk.method({ selector: unescape('%3E%3D'), category: 'comparing', fn: function (aString) { var self=this; return String(self) >= aString._asString(); return self;}, args: ["aString"], source: unescape('%3E%3D%20aString%0A%09%3Creturn%20String%28self%29%20%3E%3E%3D%20aString._asString%28%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('__lt_eq'), smalltalk.method({ selector: unescape('%3C%3D'), category: 'comparing', fn: function (aString) { var self=this; return String(self) <= aString._asString(); return self;}, args: ["aString"], source: unescape('%3C%3D%20aString%0A%09%3Creturn%20String%28self%29%20%3C%3D%20aString._asString%28%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_trimLeft_'), smalltalk.method({ selector: unescape('trimLeft%3A'), category: 'regular expressions', fn: function (separators) { var self=this; return smalltalk.send(self, "_replaceRegexp_with_", [smalltalk.send((smalltalk.RegularExpression || RegularExpression), "_fromString_flag_", [smalltalk.send(smalltalk.send(unescape("%5E%5B"), "__comma", [separators]), "__comma", [unescape("%5D+")]), "g"]), ""]); return self;}, args: ["separators"], source: unescape('trimLeft%3A%20separators%0A%0A%09%5Eself%20replaceRegexp%3A%20%28RegularExpression%20fromString%3A%20%27%5E%5B%27%2C%20separators%2C%20%27%5D+%27%20flag%3A%20%27g%27%29%20with%3A%20%27%27'), messageSends: ["replaceRegexp:with:", "fromString:flag:", unescape("%2C")], referencedClasses: ["RegularExpression"] }), smalltalk.String); smalltalk.addMethod( unescape('_trimRight_'), smalltalk.method({ selector: unescape('trimRight%3A'), category: 'regular expressions', fn: function (separators) { var self=this; return smalltalk.send(self, "_replaceRegexp_with_", [smalltalk.send((smalltalk.RegularExpression || RegularExpression), "_fromString_flag_", [smalltalk.send(smalltalk.send(unescape("%5B"), "__comma", [separators]), "__comma", [unescape("%5D+%24")]), "g"]), ""]); return self;}, args: ["separators"], source: unescape('trimRight%3A%20separators%0A%0A%09%5Eself%20replaceRegexp%3A%20%28RegularExpression%20fromString%3A%20%27%5B%27%2C%20separators%2C%20%27%5D+%24%27%20flag%3A%20%27g%27%29%20with%3A%20%27%27'), messageSends: ["replaceRegexp:with:", "fromString:flag:", unescape("%2C")], referencedClasses: ["RegularExpression"] }), smalltalk.String); smalltalk.addMethod( unescape('_trimLeft'), smalltalk.method({ selector: unescape('trimLeft'), category: 'regular expressions', fn: function () { var self=this; return smalltalk.send(self, "_trimLeft_", [unescape("%5Cs")]); return self;}, args: [], source: unescape('trimLeft%0A%09%5Eself%20trimLeft%3A%20%27%5Cs%27'), messageSends: ["trimLeft:"], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_trimRight'), smalltalk.method({ selector: unescape('trimRight'), category: 'regular expressions', fn: function () { var self=this; return smalltalk.send(self, "_trimRight_", [unescape("%5Cs")]); return self;}, args: [], source: unescape('trimRight%0A%09%5Eself%20trimRight%3A%20%27%5Cs%27'), messageSends: ["trimRight:"], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_trimBoth'), smalltalk.method({ selector: unescape('trimBoth'), category: 'regular expressions', fn: function () { var self=this; return smalltalk.send(self, "_trimBoth_", [unescape("%5Cs")]); return self;}, args: [], source: unescape('trimBoth%0A%09%5Eself%20trimBoth%3A%20%27%5Cs%27'), messageSends: ["trimBoth:"], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_trimBoth_'), smalltalk.method({ selector: unescape('trimBoth%3A'), category: 'regular expressions', fn: function (separators) { var self=this; return smalltalk.send(smalltalk.send(self, "_trimLeft_", [separators]), "_trimRight_", [separators]); return self;}, args: ["separators"], source: unescape('trimBoth%3A%20separators%0A%0A%09%5E%28self%20trimLeft%3A%20separators%29%20trimRight%3A%20separators'), messageSends: ["trimRight:", "trimLeft:"], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_asLowercase'), smalltalk.method({ selector: unescape('asLowercase'), category: 'converting', fn: function () { var self=this; return self.toLowerCase(); return self;}, args: [], source: unescape('asLowercase%0A%09%3Creturn%20self.toLowerCase%28%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_asUppercase'), smalltalk.method({ selector: unescape('asUppercase'), category: 'converting', fn: function () { var self=this; return self.toUpperCase(); return self;}, args: [], source: unescape('asUppercase%0A%09%3Creturn%20self.toUpperCase%28%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_join_'), smalltalk.method({ selector: unescape('join%3A'), category: 'split join', fn: function (aCollection) { var self=this; return smalltalk.send((smalltalk.String || String), "_streamContents_", [(function(stream){return smalltalk.send(aCollection, "_do_separatedBy_", [(function(each){return smalltalk.send(stream, "_nextPutAll_", [smalltalk.send(each, "_asString", [])]);}), (function(){return smalltalk.send(stream, "_nextPutAll_", [self]);})]);})]); return self;}, args: ["aCollection"], source: unescape('join%3A%20aCollection%20%0A%09%5E%20String%0A%09%09streamContents%3A%20%5B%3Astream%20%7C%20aCollection%0A%09%09%09%09do%3A%20%5B%3Aeach%20%7C%20stream%20nextPutAll%3A%20each%20asString%5D%20%0A%09%09%09%09separatedBy%3A%20%5Bstream%20nextPutAll%3A%20self%5D%5D'), messageSends: ["streamContents:", "do:separatedBy:", "nextPutAll:", "asString"], referencedClasses: ["String"] }), smalltalk.String); smalltalk.addMethod( unescape('_includesSubString_'), smalltalk.method({ selector: unescape('includesSubString%3A'), category: 'testing', fn: function (subString) { var self=this; return self.indexOf(subString) != -1 ; return self;}, args: ["subString"], source: unescape('includesSubString%3A%20subString%0A%09%3C%20return%20self.indexOf%28subString%29%20%21%3D%20-1%20%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_asciiValue'), smalltalk.method({ selector: unescape('asciiValue'), category: 'accessing', fn: function () { var self=this; return self.charCodeAt(0);; return self;}, args: [], source: unescape('asciiValue%0A%09%3Creturn%20self.charCodeAt%280%29%3B%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_lineIndicesDo_'), smalltalk.method({ selector: unescape('lineIndicesDo%3A'), category: 'split join', fn: function (aBlock) { var self=this; try{var cr=nil; var lf=nil; var start=nil; var sz=nil; var nextLF=nil; var nextCR=nil; (start=(1)); (sz=smalltalk.send(self, "_size", [])); (cr=smalltalk.send((smalltalk.String || String), "_cr", [])); (nextCR=smalltalk.send(self, "_indexOf_startingAt_", [cr, (1)])); (lf=smalltalk.send((smalltalk.String || String), "_lf", [])); (nextLF=smalltalk.send(self, "_indexOf_startingAt_", [lf, (1)])); (function(){while((function(){return ((($receiver = start).klass === smalltalk.Number) ? $receiver <=sz : smalltalk.send($receiver, "__lt_eq", [sz]));})()) {(function(){((($receiver = smalltalk.send(smalltalk.send(nextLF, "__eq", [(0)]), "_and_", [(function(){return smalltalk.send(nextCR, "__eq", [(0)]);})])).klass === smalltalk.Boolean) ? ($receiver ? (function(){smalltalk.send(aBlock, "_value_value_value_", [start, sz, sz]);return (function(){throw({name: 'stReturn', selector: '_lineIndicesDo_', fn: function(){return self}})})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){smalltalk.send(aBlock, "_value_value_value_", [start, sz, sz]);return (function(){throw({name: 'stReturn', selector: '_lineIndicesDo_', fn: function(){return self}})})();})]));return ((($receiver = smalltalk.send(smalltalk.send(nextCR, "__eq", [(0)]), "_or_", [(function(){return smalltalk.send((0) < nextLF, "_and_", [(function(){return ((($receiver = nextLF).klass === smalltalk.Number) ? $receiver =smalltalk.send(aSymbol, "_asString", []) : smalltalk.send($receiver, "__gt_eq", [smalltalk.send(aSymbol, "_asString", [])])); return self;}, args: ["aSymbol"], source: unescape('%3E%3D%20aSymbol%0A%09%5Eself%20asString%20%3E%3D%20aSymbol%20asString'), messageSends: [unescape("%3E%3D"), "asString"], referencedClasses: [] }), smalltalk.Symbol); smalltalk.addMethod( unescape('__eq'), smalltalk.method({ selector: unescape('%3D'), category: 'comparing', fn: function (aSymbol) { var self=this; try{((($receiver = smalltalk.send(smalltalk.send(aSymbol, "_class", []), "__eq", [smalltalk.send(self, "_class", [])])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})])); (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return smalltalk.send(smalltalk.send(self, "_asString", []), "__eq", [smalltalk.send(aSymbol, "_asString", [])])}})})(); return self; } catch(e) {if(e.name === 'stReturn' && e.selector === '__eq'){return e.fn()} throw(e)}}, args: ["aSymbol"], source: unescape('%3D%20aSymbol%0A%09aSymbol%20class%20%3D%20self%20class%20ifFalse%3A%20%5B%5Efalse%5D.%0A%09%5Eself%20asString%20%3D%20aSymbol%20asString'), messageSends: ["ifFalse:", unescape("%3D"), "class", "asString"], referencedClasses: [] }), smalltalk.Symbol); smalltalk.addMethod( unescape('_isSymbol'), smalltalk.method({ selector: unescape('isSymbol'), category: 'printing', fn: function () { var self=this; return true; return self;}, args: [], source: unescape('isSymbol%0A%09%5Etrue'), messageSends: [], referencedClasses: [] }), smalltalk.Symbol); smalltalk.addMethod( unescape('_asJavascript'), smalltalk.method({ selector: unescape('asJavascript'), category: 'converting', fn: function () { var self=this; return smalltalk.send(smalltalk.send(unescape("smalltalk.symbolFor%28%22"), "__comma", [smalltalk.send(self, "_asString", [])]), "__comma", [unescape("%22%29")]); return self;}, args: [], source: unescape('asJavascript%0A%09%5E%27smalltalk.symbolFor%28%22%27%2C%20self%20asString%2C%20%27%22%29%27'), messageSends: [unescape("%2C"), "asString"], referencedClasses: [] }), smalltalk.Symbol); smalltalk.addMethod( unescape('__gt'), smalltalk.method({ selector: unescape('%3E'), category: 'comparing', fn: function (aSymbol) { var self=this; return ((($receiver = smalltalk.send(self, "_asString", [])).klass === smalltalk.Number) ? $receiver >smalltalk.send(aSymbol, "_asString", []) : smalltalk.send($receiver, "__gt", [smalltalk.send(aSymbol, "_asString", [])])); return self;}, args: ["aSymbol"], source: unescape('%3E%20aSymbol%0A%09%5Eself%20asString%20%3E%20aSymbol%20asString'), messageSends: [unescape("%3E"), "asString"], referencedClasses: [] }), smalltalk.Symbol); smalltalk.addMethod( unescape('_shallowCopy'), smalltalk.method({ selector: unescape('shallowCopy'), category: 'copying', fn: function () { var self=this; return self; return self;}, args: [], source: unescape('shallowCopy%0A%09%5Eself'), messageSends: [], referencedClasses: [] }), smalltalk.Symbol); smalltalk.addMethod( unescape('_asSelector'), smalltalk.method({ selector: unescape('asSelector'), category: 'converting', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_asString", []), "_asSelector", []); return self;}, args: [], source: unescape('asSelector%0A%09%5Eself%20asString%20asSelector'), messageSends: ["asSelector", "asString"], referencedClasses: [] }), smalltalk.Symbol); smalltalk.addMethod( unescape('_asJSON'), smalltalk.method({ selector: unescape('asJSON'), category: 'converting', fn: function (){ var self=this; return smalltalk.send(smalltalk.send(self, "_asString", []), "_asJSON", []); return self;}, args: [], source: unescape('asJSON%0A%09%5Eself%20asString%20asJSON'), messageSends: ["asJSON", "asString"], referencedClasses: [] }), smalltalk.Symbol); smalltalk.addMethod( unescape('_lookup_'), smalltalk.method({ selector: unescape('lookup%3A'), category: 'instance creation', fn: function (aString) { var self=this; return smalltalk.symbolFor(aString);; return self;}, args: ["aString"], source: unescape('lookup%3A%20aString%0A%09%3Creturn%20smalltalk.symbolFor%28aString%29%3B%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Symbol.klass); smalltalk.addMethod( unescape('_basicNew'), smalltalk.method({ selector: unescape('basicNew'), category: 'instance creation', fn: function () { var self=this; smalltalk.send(self, "_shouldNotImplement", []); return self;}, args: [], source: unescape('basicNew%0A%09self%20shouldNotImplement'), messageSends: ["shouldNotImplement"], referencedClasses: [] }), smalltalk.Symbol.klass); smalltalk.addMethod( unescape('_fromString_'), smalltalk.method({ selector: unescape('fromString%3A'), category: 'instance creation', fn: function (aString) { var self=this; return smalltalk.send(self, "_lookup_", [aString]); return self;}, args: ["aString"], source: unescape('fromString%3A%20aString%0A%09%5Eself%20lookup%3A%20aString'), messageSends: ["lookup:"], referencedClasses: [] }), smalltalk.Symbol.klass); smalltalk.addClass('Array', smalltalk.SequenceableCollection, [], 'Kernel-Collections'); smalltalk.addMethod( unescape('_size'), smalltalk.method({ selector: unescape('size'), category: 'accessing', fn: function () { var self=this; return self.length; return self;}, args: [], source: unescape('size%0A%09%3Creturn%20self.length%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_at_put_'), smalltalk.method({ selector: unescape('at%3Aput%3A'), category: 'accessing', fn: function (anIndex, anObject) { var self=this; return self[anIndex - 1] = anObject; return self;}, args: ["anIndex", "anObject"], source: unescape('at%3A%20anIndex%20put%3A%20anObject%0A%09%3Creturn%20self%5BanIndex%20-%201%5D%20%3D%20anObject%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_at_ifAbsent_'), smalltalk.method({ selector: unescape('at%3AifAbsent%3A'), category: 'accessing', fn: function (anIndex, aBlock) { var self=this; var value = self[anIndex - 1]; if(value === undefined) { return aBlock(); } else { return value; } ; return self;}, args: ["anIndex", "aBlock"], source: unescape('at%3A%20anIndex%20ifAbsent%3A%20aBlock%0A%09%3C%0A%09%20%20%20%20var%20value%20%3D%20self%5BanIndex%20-%201%5D%3B%0A%09%20%20%20%20if%28value%20%3D%3D%3D%20undefined%29%20%7B%0A%09%09return%20aBlock%28%29%3B%0A%09%20%20%20%20%7D%20else%20%7B%0A%09%09return%20value%3B%0A%09%20%20%20%20%7D%0A%09%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_add_'), smalltalk.method({ selector: unescape('add%3A'), category: 'adding/removing', fn: function (anObject) { var self=this; self.push(anObject); return anObject;; return self;}, args: ["anObject"], source: unescape('add%3A%20anObject%0A%09%3Cself.push%28anObject%29%3B%20return%20anObject%3B%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_join_'), smalltalk.method({ selector: unescape('join%3A'), category: 'enumerating', fn: function (aString) { var self=this; return self.join(aString); return self;}, args: ["aString"], source: unescape('join%3A%20aString%0A%09%3Creturn%20self.join%28aString%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_asJavascript'), smalltalk.method({ selector: unescape('asJavascript'), category: 'converting', fn: function () { var self=this; return smalltalk.send(smalltalk.send(unescape("%5B"), "__comma", [smalltalk.send(smalltalk.send(self, "_collect_", [(function(each){return smalltalk.send(each, "_asJavascript", []);})]), "_join_", [unescape("%2C%20")])]), "__comma", [unescape("%5D")]); return self;}, args: [], source: unescape('asJavascript%0A%09%5E%27%5B%27%2C%20%28%28self%20collect%3A%20%5B%3Aeach%20%7C%20each%20asJavascript%5D%29%20join%3A%20%27%2C%20%27%29%2C%20%20%27%5D%27'), messageSends: [unescape("%2C"), "join:", "collect:", "asJavascript"], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_sort'), smalltalk.method({ selector: unescape('sort'), category: 'enumerating', fn: function () { var self=this; return smalltalk.send(self, "_basicPerform_", ["sort"]); return self;}, args: [], source: unescape('sort%0A%20%20%20%20%5Eself%20basicPerform%3A%20%27sort%27'), messageSends: ["basicPerform:"], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_sort_'), smalltalk.method({ selector: unescape('sort%3A'), category: 'enumerating', fn: function (aBlock) { var self=this; return self.sort(function(a, b) { if(aBlock(a,b)) {return -1} else {return 1} }) ; return self;}, args: ["aBlock"], source: unescape('sort%3A%20aBlock%0A%09%3C%0A%09%09return%20self.sort%28function%28a%2C%20b%29%20%7B%0A%09%09%09if%28aBlock%28a%2Cb%29%29%20%7Breturn%20-1%7D%20else%20%7Breturn%201%7D%0A%09%09%7D%29%0A%09%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_remove_'), smalltalk.method({ selector: unescape('remove%3A'), category: 'adding/removing', fn: function (anObject) { var self=this; for(var i=0;i