|  | @@ -1,4 +1,4 @@
 | 
	
		
			
				|  |  | -smalltalk.addPackage('Kernel-Classes', {});
 | 
	
		
			
				|  |  | +smalltalk.addPackage('Kernel-Classes');
 | 
	
		
			
				|  |  |  smalltalk.addClass('Behavior', smalltalk.Object, [], 'Kernel-Classes');
 | 
	
		
			
				|  |  |  smalltalk.Behavior.comment="Behavior is the superclass of all class objects. \x0a\x0aIt defines the protocol for creating instances of a class with `#basicNew` and `#new` (see `boot.js` for class constructors details).\x0aInstances know about the subclass/superclass relationships between classes, contain the description that instances are created from, \x0aand hold the method dictionary that's associated with each class.\x0a\x0aBehavior also  provides methods for compiling methods, examining the method dictionary, and iterating over the class hierarchy."
 | 
	
		
			
				|  |  |  smalltalk.addMethod(
 | 
	
	
		
			
				|  | @@ -8,18 +8,33 @@ selector: "addCompiledMethod:",
 | 
	
		
			
				|  |  |  category: 'compiling',
 | 
	
		
			
				|  |  |  fn: function (aMethod){
 | 
	
		
			
				|  |  |  var self=this;
 | 
	
		
			
				|  |  | -return smalltalk.withContext(function($ctx1) { 
var $1,$2;
 | 
	
		
			
				|  |  | +var oldMethod,announcement;
 | 
	
		
			
				|  |  | +return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4,$5;
 | 
	
		
			
				|  |  | +oldMethod=_st(_st(self)._methodDictionary())._at_ifAbsent_(_st(aMethod)._selector(),(function(){
 | 
	
		
			
				|  |  | +return smalltalk.withContext(function($ctx2) {
return nil;
 | 
	
		
			
				|  |  | +}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 | 
	
		
			
				|  |  |  _st(self)._basicAddCompiledMethod_(aMethod);
 | 
	
		
			
				|  |  | -$1=_st((smalltalk.MethodAdded || MethodAdded))._new();
 | 
	
		
			
				|  |  | -_st($1)._theClass_(self);
 | 
	
		
			
				|  |  | -_st($1)._method_(aMethod);
 | 
	
		
			
				|  |  | -$2=_st($1)._yourself();
 | 
	
		
			
				|  |  | -_st(_st((smalltalk.SystemAnnouncer || SystemAnnouncer))._current())._announce_($2);
 | 
	
		
			
				|  |  | -return self}, function($ctx1) {$ctx1.fill(self,"addCompiledMethod:",{aMethod:aMethod}, smalltalk.Behavior)})},
 | 
	
		
			
				|  |  | +$1=oldMethod;
 | 
	
		
			
				|  |  | +if(($receiver = $1) == nil || $receiver == undefined){
 | 
	
		
			
				|  |  | +$2=_st((smalltalk.MethodAdded || MethodAdded))._new();
 | 
	
		
			
				|  |  | +_st($2)._theClass_(self);
 | 
	
		
			
				|  |  | +_st($2)._method_(aMethod);
 | 
	
		
			
				|  |  | +$3=_st($2)._yourself();
 | 
	
		
			
				|  |  | +announcement=$3;
 | 
	
		
			
				|  |  | +} else {
 | 
	
		
			
				|  |  | +$4=_st((smalltalk.MethodModified || MethodModified))._new();
 | 
	
		
			
				|  |  | +_st($4)._theClass_(self);
 | 
	
		
			
				|  |  | +_st($4)._oldMethod_(oldMethod);
 | 
	
		
			
				|  |  | +_st($4)._method_(aMethod);
 | 
	
		
			
				|  |  | +$5=_st($4)._yourself();
 | 
	
		
			
				|  |  | +announcement=$5;
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +_st(_st((smalltalk.SystemAnnouncer || SystemAnnouncer))._current())._announce_(announcement);
 | 
	
		
			
				|  |  | +return self}, function($ctx1) {$ctx1.fill(self,"addCompiledMethod:",{aMethod:aMethod,oldMethod:oldMethod,announcement:announcement}, smalltalk.Behavior)})},
 | 
	
		
			
				|  |  |  args: ["aMethod"],
 | 
	
		
			
				|  |  | -source: "addCompiledMethod: aMethod\x0a\x09self basicAddCompiledMethod: aMethod.\x0a    \x0a    SystemAnnouncer current\x0a   \x09\x09announce: (MethodAdded new\x0a        \x09theClass: self;\x0a            method: aMethod;\x0a            yourself)",
 | 
	
		
			
				|  |  | -messageSends: ["basicAddCompiledMethod:", "announce:", "theClass:", "new", "method:", "yourself", "current"],
 | 
	
		
			
				|  |  | -referencedClasses: ["MethodAdded", "SystemAnnouncer"]
 | 
	
		
			
				|  |  | +source: "addCompiledMethod: aMethod\x0a\x09| oldMethod announcement |\x0a    \x0a\x09oldMethod := self methodDictionary \x0a    \x09at: aMethod selector \x0a        ifAbsent: [ nil ].\x0a    \x0a\x09self basicAddCompiledMethod: aMethod.\x0a    \x0a    announcement := oldMethod \x0a    \x09ifNil: [\x0a\x09\x09    MethodAdded new\x0a       \x09\x09\x09 \x09theClass: self;\x0a\x09\x09            method: aMethod;\x0a       \x09\x09\x09    yourself ]\x0a    \x09ifNotNil: [\x0a          \x09MethodModified new\x0a       \x09\x09\x09 \x09theClass: self;\x0a                    oldMethod: oldMethod; \x0a\x09\x09            method: aMethod;\x0a       \x09\x09\x09    yourself ].\x0a                    \x0a\x09SystemAnnouncer current\x0a\x09\x09   \x09\x09announce: announcement",
 | 
	
		
			
				|  |  | +messageSends: ["at:ifAbsent:", "selector", "methodDictionary", "basicAddCompiledMethod:", "ifNil:ifNotNil:", "theClass:", "new", "method:", "yourself", "oldMethod:", "announce:", "current"],
 | 
	
		
			
				|  |  | +referencedClasses: ["MethodAdded", "MethodModified", "SystemAnnouncer"]
 | 
	
		
			
				|  |  |  }),
 | 
	
		
			
				|  |  |  smalltalk.Behavior);
 | 
	
		
			
				|  |  |  
 |