|  | @@ -417,12 +417,16 @@ function ClassesBrik(brikz, st) {
 | 
	
		
			
				|  |  |  	 A Package is lazily created if it does not exist with given name. */
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	st.addClass = function(className, superclass, iVarNames, pkgName) {
 | 
	
		
			
				|  |  | -		var pkg = st.addPackage(pkgName);
 | 
	
		
			
				|  |  |  		if (superclass == nil) { superclass = null; }
 | 
	
		
			
				|  |  | +		rawAddClass(pkgName, className, superclass, iVarNames, false, null);
 | 
	
		
			
				|  |  | +	};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	function rawAddClass(pkgName, className, superclass, iVarNames, wrapped, fn) {
 | 
	
		
			
				|  |  | +		var pkg = st.addPackage(pkgName);
 | 
	
		
			
				|  |  |  		if(st[className] && st[className].superclass == superclass) {
 | 
	
		
			
				|  |  | -			st[className].superclass = superclass;
 | 
	
		
			
				|  |  | -			st[className].iVarNames = iVarNames;
 | 
	
		
			
				|  |  | -			st[className].pkg = pkg || st[className].pkg;
 | 
	
		
			
				|  |  | +//            st[className].superclass = superclass;
 | 
	
		
			
				|  |  | +			st[className].iVarNames = iVarNames || [];
 | 
	
		
			
				|  |  | +			if (pkg) st[className].pkg = pkg;
 | 
	
		
			
				|  |  |  		} else {
 | 
	
		
			
				|  |  |  			if(st[className]) {
 | 
	
		
			
				|  |  |  				st.removeClass(st[className]);
 | 
	
	
		
			
				|  | @@ -431,13 +435,15 @@ function ClassesBrik(brikz, st) {
 | 
	
		
			
				|  |  |  				className: className,
 | 
	
		
			
				|  |  |  				superclass: superclass,
 | 
	
		
			
				|  |  |  				pkg: pkg,
 | 
	
		
			
				|  |  | -				iVarNames: iVarNames
 | 
	
		
			
				|  |  | +				iVarNames: iVarNames,
 | 
	
		
			
				|  |  | +				fn: fn,
 | 
	
		
			
				|  |  | +				wrapped: wrapped
 | 
	
		
			
				|  |  |  			});
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		classes.addElement(st[className]);
 | 
	
		
			
				|  |  |  		org.addOrganizationElement(pkg, st[className]);
 | 
	
		
			
				|  |  | -	};
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	st.removeClass = function(klass) {
 | 
	
		
			
				|  |  |  		org.removeOrganizationElement(klass.pkg, klass);
 | 
	
	
		
			
				|  | @@ -449,23 +455,11 @@ function ClassesBrik(brikz, st) {
 | 
	
		
			
				|  |  |  	 global smalltalk object. Package is lazily created if it does not exist with given name. */
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	st.wrapClassName = function(className, pkgName, fn, superclass, wrapped) {
 | 
	
		
			
				|  |  | -		if(wrapped !== false) {
 | 
	
		
			
				|  |  | -			wrapped = true;
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		var pkg = st.addPackage(pkgName);
 | 
	
		
			
				|  |  | -		st[className] = klass({
 | 
	
		
			
				|  |  | -			className:  className,
 | 
	
		
			
				|  |  | -			superclass: superclass,
 | 
	
		
			
				|  |  | -			pkg:        pkg,
 | 
	
		
			
				|  |  | -			fn:         fn,
 | 
	
		
			
				|  |  | -			wrapped:    wrapped
 | 
	
		
			
				|  |  | -		});
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		classes.addElement(st[className]);
 | 
	
		
			
				|  |  | +		wrapped = wrapped !== false;
 | 
	
		
			
				|  |  | +		rawAddClass(pkgName, className, superclass, null, wrapped, fn);
 | 
	
		
			
				|  |  |  		if(wrapped) {
 | 
	
		
			
				|  |  |  			wrappedClasses.addElement(st[className]);
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | -		org.addOrganizationElement(pkg, st[className]);
 | 
	
		
			
				|  |  |  	};
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	/* Create an alias for an existing class */
 | 
	
	
		
			
				|  | @@ -679,6 +673,8 @@ function SmalltalkInitBrik(brikz, st) {
 | 
	
		
			
				|  |  |  	st.initialize = function() {
 | 
	
		
			
				|  |  |  		if(initialized) { return; }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +		runnable();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  		st.classes().forEach(function(klass) {
 | 
	
		
			
				|  |  |  			st.init(klass);
 | 
	
		
			
				|  |  |  		});
 | 
	
	
		
			
				|  | @@ -713,6 +709,18 @@ function SmalltalkInitBrik(brikz, st) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		st.alias(st.Array, "OrderedCollection");
 | 
	
		
			
				|  |  |  		st.alias(st.Date, "Time");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		/*
 | 
	
		
			
				|  |  | +		 * Answer the smalltalk representation of o.
 | 
	
		
			
				|  |  | +		 * Used in message sends
 | 
	
		
			
				|  |  | +		 */
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		st._st = function (o) {
 | 
	
		
			
				|  |  | +			if(o == null) {return nil;}
 | 
	
		
			
				|  |  | +			if(o.klass) {return o;}
 | 
	
		
			
				|  |  | +			return st.JSObjectProxy._on_(o);
 | 
	
		
			
				|  |  | +		};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	};
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -897,17 +905,6 @@ function RuntimeBrik(brikz, st) {
 | 
	
		
			
				|  |  |  		st.thisContext = context.homeContext;
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	/*
 | 
	
		
			
				|  |  | -	 * Answer the smalltalk representation of o.
 | 
	
		
			
				|  |  | -	 * Used in message sends
 | 
	
		
			
				|  |  | -	 */
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	this._st = function (o) {
 | 
	
		
			
				|  |  | -		if(o == null) {return nil;}
 | 
	
		
			
				|  |  | -		if(o.klass) {return o;}
 | 
	
		
			
				|  |  | -		return st.JSObjectProxy._on_(o);
 | 
	
		
			
				|  |  | -	};
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  function MessageSendBrik(brikz, st) {
 | 
	
	
		
			
				|  | @@ -1044,13 +1041,12 @@ function SelectorConversionBrik(brikz, st) {
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/* Making smalltalk that can load */
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  brikz.root = RootBrik;
 | 
	
		
			
				|  |  |  brikz.dnu = DNUBrik;
 | 
	
		
			
				|  |  | -brikz.messageSend = MessageSendBrik;
 | 
	
		
			
				|  |  |  brikz.organize = OrganizeBrik;
 | 
	
		
			
				|  |  |  brikz.selectorConversion = SelectorConversionBrik;
 | 
	
		
			
				|  |  | -brikz.runtime = RuntimeBrik;
 | 
	
		
			
				|  |  | -brikz.primitives = PrimitivesBrik;
 | 
	
		
			
				|  |  |  brikz.classInit = ClassInitBrik;
 | 
	
		
			
				|  |  |  brikz.manipulation = ManipulationBrik;
 | 
	
		
			
				|  |  |  brikz.classes = ClassesBrik;
 | 
	
	
		
			
				|  | @@ -1060,8 +1056,19 @@ brikz.augments = AugmentsBrik;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  brikz.rebuild();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/* Making smalltalk that can run */
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +function runnable () {
 | 
	
		
			
				|  |  | +	brikz.messageSend = MessageSendBrik;
 | 
	
		
			
				|  |  | +	brikz.runtime = RuntimeBrik;
 | 
	
		
			
				|  |  | +	brikz.primitives = PrimitivesBrik;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	brikz.rebuild();
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  global_smalltalk = api;
 | 
	
		
			
				|  |  |  global_nil = nil;
 | 
	
		
			
				|  |  | -global__st = brikz.runtime._st;
 | 
	
		
			
				|  |  | +global__st = api._st;
 | 
	
		
			
				|  |  | +api._st = null;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  })();
 |