|  | @@ -33,46 +33,60 @@ function $MethodAdded(){return smalltalk.MethodAdded||(typeof MethodAdded=="unde
 | 
	
		
			
				|  |  |  function $MethodModified(){return smalltalk.MethodModified||(typeof MethodModified=="undefined"?nil:MethodModified)}
 | 
	
		
			
				|  |  |  function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
 | 
	
		
			
				|  |  |  return smalltalk.withContext(function($ctx1) { 
 | 
	
		
			
				|  |  | -var $1,$3,$4,$2,$5,$6,$7,$8,$9;
 | 
	
		
			
				|  |  | +var $2,$3,$1,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13;
 | 
	
		
			
				|  |  |  oldMethod=_st(self._methodDictionary())._at_ifAbsent_(_st(aMethod)._selector(),(function(){
 | 
	
		
			
				|  |  |  return smalltalk.withContext(function($ctx2) {
 | 
	
		
			
				|  |  |  return nil;
 | 
	
		
			
				|  |  |  }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
 | 
	
		
			
				|  |  | -$1=oldMethod;
 | 
	
		
			
				|  |  | -if(($receiver = $1) == nil || $receiver == null){
 | 
	
		
			
				|  |  | -$1;
 | 
	
		
			
				|  |  | -} else {
 | 
	
		
			
				|  |  | -self._removeCompiledMethod_(oldMethod);
 | 
	
		
			
				|  |  | -};
 | 
	
		
			
				|  |  | -$3=self._protocols();
 | 
	
		
			
				|  |  | -$4=_st(aMethod)._protocol();
 | 
	
		
			
				|  |  | +$2=self._protocols();
 | 
	
		
			
				|  |  | +$3=_st(aMethod)._protocol();
 | 
	
		
			
				|  |  |  $ctx1.sendIdx["protocol"]=1;
 | 
	
		
			
				|  |  | -$2=_st($3)._includes_($4);
 | 
	
		
			
				|  |  | -if(! smalltalk.assert($2)){
 | 
	
		
			
				|  |  | -_st(self._organization())._addElement_(_st(aMethod)._protocol());
 | 
	
		
			
				|  |  | +$1=_st($2)._includes_($3);
 | 
	
		
			
				|  |  | +if(! smalltalk.assert($1)){
 | 
	
		
			
				|  |  | +$4=self._organization();
 | 
	
		
			
				|  |  | +$ctx1.sendIdx["organization"]=1;
 | 
	
		
			
				|  |  | +$5=_st(aMethod)._protocol();
 | 
	
		
			
				|  |  | +$ctx1.sendIdx["protocol"]=2;
 | 
	
		
			
				|  |  | +_st($4)._addElement_($5);
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  self._basicAddCompiledMethod_(aMethod);
 | 
	
		
			
				|  |  | -$5=oldMethod;
 | 
	
		
			
				|  |  | -if(($receiver = $5) == nil || $receiver == null){
 | 
	
		
			
				|  |  | -$6=_st($MethodAdded())._new();
 | 
	
		
			
				|  |  | +$6=oldMethod;
 | 
	
		
			
				|  |  | +if(($receiver = $6) == nil || $receiver == null){
 | 
	
		
			
				|  |  | +$6;
 | 
	
		
			
				|  |  | +} else {
 | 
	
		
			
				|  |  | +_st(_st(self._methods())._select_((function(each){
 | 
	
		
			
				|  |  | +return smalltalk.withContext(function($ctx2) {
 | 
	
		
			
				|  |  | +$7=_st(each)._protocol();
 | 
	
		
			
				|  |  | +$ctx2.sendIdx["protocol"]=3;
 | 
	
		
			
				|  |  | +$8=_st(oldMethod)._protocol();
 | 
	
		
			
				|  |  | +$ctx2.sendIdx["protocol"]=4;
 | 
	
		
			
				|  |  | +return _st($7).__eq($8);
 | 
	
		
			
				|  |  | +}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)})})))._ifEmpty_((function(){
 | 
	
		
			
				|  |  | +return smalltalk.withContext(function($ctx2) {
 | 
	
		
			
				|  |  | +return _st(self._organization())._removeElement_(_st(oldMethod)._protocol());
 | 
	
		
			
				|  |  | +}, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)})}));
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +$9=oldMethod;
 | 
	
		
			
				|  |  | +if(($receiver = $9) == nil || $receiver == null){
 | 
	
		
			
				|  |  | +$10=_st($MethodAdded())._new();
 | 
	
		
			
				|  |  |  $ctx1.sendIdx["new"]=1;
 | 
	
		
			
				|  |  | -_st($6)._method_(aMethod);
 | 
	
		
			
				|  |  | +_st($10)._method_(aMethod);
 | 
	
		
			
				|  |  |  $ctx1.sendIdx["method:"]=1;
 | 
	
		
			
				|  |  | -$7=_st($6)._yourself();
 | 
	
		
			
				|  |  | +$11=_st($10)._yourself();
 | 
	
		
			
				|  |  |  $ctx1.sendIdx["yourself"]=1;
 | 
	
		
			
				|  |  | -announcement=$7;
 | 
	
		
			
				|  |  | +announcement=$11;
 | 
	
		
			
				|  |  |  } else {
 | 
	
		
			
				|  |  | -$8=_st($MethodModified())._new();
 | 
	
		
			
				|  |  | -_st($8)._oldMethod_(oldMethod);
 | 
	
		
			
				|  |  | -_st($8)._method_(aMethod);
 | 
	
		
			
				|  |  | -$9=_st($8)._yourself();
 | 
	
		
			
				|  |  | -announcement=$9;
 | 
	
		
			
				|  |  | +$12=_st($MethodModified())._new();
 | 
	
		
			
				|  |  | +_st($12)._oldMethod_(oldMethod);
 | 
	
		
			
				|  |  | +_st($12)._method_(aMethod);
 | 
	
		
			
				|  |  | +$13=_st($12)._yourself();
 | 
	
		
			
				|  |  | +announcement=$13;
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  _st(_st($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\x09| oldMethod announcement |\x0a\x09\x0a\x09oldMethod := self methodDictionary\x0a\x09\x09at: aMethod selector\x0a\x09\x09ifAbsent: [ nil ].\x0a\x09\x0a\x09oldMethod ifNotNil: [\x0a\x09\x09self removeCompiledMethod: oldMethod ].\x0a\x09\x0a\x09(self protocols includes: aMethod protocol)\x0a\x09\x09ifFalse: [ self organization addElement: aMethod protocol ].\x0a\x0a\x09self basicAddCompiledMethod: aMethod.\x0a\x09\x0a\x09announcement := oldMethod\x0a\x09\x09ifNil: [\x0a\x09\x09\x09MethodAdded new\x0a\x09\x09\x09\x09\x09method: aMethod;\x0a\x09\x09\x09\x09\x09yourself ]\x0a\x09\x09ifNotNil: [\x0a\x09\x09\x09MethodModified new\x0a\x09\x09\x09\x09\x09oldMethod: oldMethod;\x0a\x09\x09\x09\x09\x09method: aMethod;\x0a\x09\x09\x09\x09\x09yourself ].\x0a\x09\x09\x09\x09\x09\x0a\x09\x09\x09\x09\x09\x0a\x09SystemAnnouncer current\x0a\x09\x09\x09\x09announce: announcement",
 | 
	
		
			
				|  |  | -messageSends: ["at:ifAbsent:", "methodDictionary", "selector", "ifNotNil:", "removeCompiledMethod:", "ifFalse:", "includes:", "protocols", "protocol", "addElement:", "organization", "basicAddCompiledMethod:", "ifNil:ifNotNil:", "method:", "new", "yourself", "oldMethod:", "announce:", "current"],
 | 
	
		
			
				|  |  | +source: "addCompiledMethod: aMethod\x0a\x09| oldMethod announcement |\x0a\x09\x0a\x09oldMethod := self methodDictionary\x0a\x09\x09at: aMethod selector\x0a\x09\x09ifAbsent: [ nil ].\x0a\x09\x0a\x09(self protocols includes: aMethod protocol)\x0a\x09\x09ifFalse: [ self organization addElement: aMethod protocol ].\x0a\x0a\x09self basicAddCompiledMethod: aMethod.\x0a\x09\x0a\x09oldMethod ifNotNil: [\x0a\x09\x09(self methods\x0a\x09\x09\x09select: [ :each | each protocol = oldMethod protocol ])\x0a\x09\x09\x09ifEmpty: [ self organization removeElement: oldMethod protocol ] ].\x0a\x09\x0a\x09announcement := oldMethod\x0a\x09\x09ifNil: [\x0a\x09\x09\x09MethodAdded new\x0a\x09\x09\x09\x09\x09method: aMethod;\x0a\x09\x09\x09\x09\x09yourself ]\x0a\x09\x09ifNotNil: [\x0a\x09\x09\x09MethodModified new\x0a\x09\x09\x09\x09\x09oldMethod: oldMethod;\x0a\x09\x09\x09\x09\x09method: aMethod;\x0a\x09\x09\x09\x09\x09yourself ].\x0a\x09\x09\x09\x09\x09\x0a\x09\x09\x09\x09\x09\x0a\x09SystemAnnouncer current\x0a\x09\x09\x09\x09announce: announcement",
 | 
	
		
			
				|  |  | +messageSends: ["at:ifAbsent:", "methodDictionary", "selector", "ifFalse:", "includes:", "protocols", "protocol", "addElement:", "organization", "basicAddCompiledMethod:", "ifNotNil:", "ifEmpty:", "select:", "methods", "=", "removeElement:", "ifNil:ifNotNil:", "method:", "new", "yourself", "oldMethod:", "announce:", "current"],
 | 
	
		
			
				|  |  |  referencedClasses: ["MethodAdded", "MethodModified", "SystemAnnouncer"]
 | 
	
		
			
				|  |  |  }),
 | 
	
		
			
				|  |  |  smalltalk.Behavior);
 |