|  | @@ -171,50 +171,28 @@ function Smalltalk(){
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  	};
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	if ('function' === typeof Object.keys) {
 | 
	
		
			
				|  |  | -		st.initSubTree = function(klass) {
 | 
	
		
			
				|  |  | -			var subclasses = st.subclasses(klass);
 | 
	
		
			
				|  |  | -			var methods, proto = klass.fn.prototype;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			if(klass.superclass && klass.superclass !== nil) {
 | 
	
		
			
				|  |  | -				methods = st.methods(klass.superclass);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -				//Methods linking
 | 
	
		
			
				|  |  | -				for(var keys=Object.keys(methods),i=0,l=keys.length; i<l; ++i) {
 | 
	
		
			
				|  |  | -					var k = keys[i]
 | 
	
		
			
				|  |  | -					if(!proto.methods[k]) {
 | 
	
		
			
				|  |  | -						proto.inheritedMethods[k] = methods[k];
 | 
	
		
			
				|  |  | -						proto[methods[k].jsSelector] = methods[k].fn;
 | 
	
		
			
				|  |  | -					}
 | 
	
		
			
				|  |  | +	st.initSubTree = function(klass) {
 | 
	
		
			
				|  |  | +		var subclasses = st.subclasses(klass);
 | 
	
		
			
				|  |  | +		var methods, proto = klass.fn.prototype;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		if(klass.superclass && klass.superclass !== nil) {
 | 
	
		
			
				|  |  | +			methods = st.methods(klass.superclass);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			//Methods linking
 | 
	
		
			
				|  |  | +			for(var keys=Object.keys(methods),i=0,l=keys.length; i<l; ++i) {
 | 
	
		
			
				|  |  | +				var k = keys[i]
 | 
	
		
			
				|  |  | +				if(!proto.methods[k]) {
 | 
	
		
			
				|  |  | +					proto.inheritedMethods[k] = methods[k];
 | 
	
		
			
				|  |  | +					proto[methods[k].jsSelector] = methods[k].fn;
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -			for(var i=0;i<subclasses.length;i++) {
 | 
	
		
			
				|  |  | -				st.initSubTree(subclasses[i]);
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -		};
 | 
	
		
			
				|  |  | -	} else {
 | 
	
		
			
				|  |  | -		st.initSubTree = function(klass) {
 | 
	
		
			
				|  |  | -			var subclasses = st.subclasses(klass);
 | 
	
		
			
				|  |  | -			var methods, proto = klass.fn.prototype;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			if(klass.superclass && klass.superclass !== nil) {
 | 
	
		
			
				|  |  | -				methods = st.methods(klass.superclass);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -				//Methods linking
 | 
	
		
			
				|  |  | -				for(var i in methods) {
 | 
	
		
			
				|  |  | -					if(!proto.methods[i]) {
 | 
	
		
			
				|  |  | -						proto.inheritedMethods[i] = methods[i];
 | 
	
		
			
				|  |  | -						proto[methods[i].jsSelector] = methods[i].fn;
 | 
	
		
			
				|  |  | -					}
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | +		for(var i=0;i<subclasses.length;i++) {
 | 
	
		
			
				|  |  | +			st.initSubTree(subclasses[i]);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +	};
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -			for(var i=0;i<subclasses.length;i++) {
 | 
	
		
			
				|  |  | -				st.initSubTree(subclasses[i]);
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -		};
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	/* Answer all registered Packages as Array */
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -229,56 +207,33 @@ function Smalltalk(){
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	/* Answer all registered Smalltalk classes */
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	if ('function' === typeof Object.keys) {
 | 
	
		
			
				|  |  | -		st.classes = function() {
 | 
	
		
			
				|  |  | -			var classes = [], names = Object.keys(st), l = names.length;
 | 
	
		
			
				|  |  | -			for (var i=0; i<l; ++i) {
 | 
	
		
			
				|  |  | -				var name = names[i];
 | 
	
		
			
				|  |  | -				if (name.search(/^[A-Z]/) !== -1) {
 | 
	
		
			
				|  |  | -					classes.push(st[name]);
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			return classes;
 | 
	
		
			
				|  |  | -		};
 | 
	
		
			
				|  |  | -	} else {
 | 
	
		
			
				|  |  | -		st.classes = function() {
 | 
	
		
			
				|  |  | -			var classes = [];
 | 
	
		
			
				|  |  | -			for(var i in st) {
 | 
	
		
			
				|  |  | -				if(i.search(/^[A-Z]/g) != -1) {
 | 
	
		
			
				|  |  | -					classes.push(st[i]);
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | +	st.classes = function() {
 | 
	
		
			
				|  |  | +		var classes = [], names = Object.keys(st), l = names.length;
 | 
	
		
			
				|  |  | +		for (var i=0; i<l; ++i) {
 | 
	
		
			
				|  |  | +			var name = names[i];
 | 
	
		
			
				|  |  | +			if (name.search(/^[A-Z]/) !== -1) {
 | 
	
		
			
				|  |  | +				classes.push(st[name]);
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  | -			return classes
 | 
	
		
			
				|  |  | -		};
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		return classes;
 | 
	
		
			
				|  |  | +	};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	/* Answer all methods (included inherited ones) of klass. */
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	if ('function' === typeof Object.keys) {
 | 
	
		
			
				|  |  | -		st.methods = function(klass) {
 | 
	
		
			
				|  |  | -			var methods = {};
 | 
	
		
			
				|  |  | -			var copyFrom = klass.fn.prototype.methods;
 | 
	
		
			
				|  |  | -			for(var i=0, k=Object.keys(copyFrom), l=k.length; i<l; ++i) {
 | 
	
		
			
				|  |  | -				methods[k[i]] = copyFrom[k[i]];
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			copyFrom = klass.fn.prototype.inheritedMethods;
 | 
	
		
			
				|  |  | -			for(var i=0, k=Object.keys(copyFrom), l=k.length; i<l; ++i) {
 | 
	
		
			
				|  |  | -				methods[k[i]] = copyFrom[k[i]];
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			return methods;
 | 
	
		
			
				|  |  | -		};
 | 
	
		
			
				|  |  | -	} else {
 | 
	
		
			
				|  |  | -		st.methods = function(klass) {
 | 
	
		
			
				|  |  | -			var methods = {};
 | 
	
		
			
				|  |  | -			for(var i in klass.fn.prototype.methods) {
 | 
	
		
			
				|  |  | -				methods[i] = klass.fn.prototype.methods[i]
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			for(var i in klass.fn.prototype.inheritedMethods) {
 | 
	
		
			
				|  |  | -				methods[i] = klass.fn.prototype.inheritedMethods[i]
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			return methods;
 | 
	
		
			
				|  |  | -		};
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | +	st.methods = function(klass) {
 | 
	
		
			
				|  |  | +		var methods = {};
 | 
	
		
			
				|  |  | +		var copyFrom = klass.fn.prototype.methods;
 | 
	
		
			
				|  |  | +		for(var i=0, k=Object.keys(copyFrom), l=k.length; i<l; ++i) {
 | 
	
		
			
				|  |  | +			methods[k[i]] = copyFrom[k[i]];
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		copyFrom = klass.fn.prototype.inheritedMethods;
 | 
	
		
			
				|  |  | +		for(var i=0, k=Object.keys(copyFrom), l=k.length; i<l; ++i) {
 | 
	
		
			
				|  |  | +			methods[k[i]] = copyFrom[k[i]];
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		return methods;
 | 
	
		
			
				|  |  | +	};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	/* Answer the direct subclasses of klass. */
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -544,10 +499,6 @@ function Smalltalk(){
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		return object;
 | 
	
		
			
				|  |  |  	};
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	/* Kept for backward compatibility */
 | 
	
		
			
				|  |  | -	st.setDeploymentMode = function() {};
 | 
	
		
			
				|  |  | -	st.setDevelopmentMode = function() {};
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  function SmalltalkMethodContext(receiver, selector, temps, home) {
 |