| 
					
				 | 
			
			
				@@ -77,7 +77,7 @@ function Brikz(api) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				var b = brikz[key], bak = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				while (typeof b === "function") b = new b(brikz, api, bak); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				if (b === bak) { b = obrikz[key]; mixin(oapi, api, bak); } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				brikz[key] = backup[key] = b; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return brikz[key] = backup[key] = b; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			Object.keys(brikz).forEach(function (key) { brikz.ensure(key); }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			brikz.ensure = null; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -113,17 +113,6 @@ function SmalltalkPackage() {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function SmalltalkMethod() {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function SmalltalkNil() {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-function SmalltalkOrganizer() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-function SmalltalkPackageOrganizer() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	this.elements = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-function SmalltalkClassOrganizer() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	this.elements = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function inherits(child, parent) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	child.prototype = Object.create(parent.prototype, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		constructor: { value: child, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -137,11 +126,42 @@ inherits(SmalltalkMetaclass, SmalltalkBehavior); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 inherits(SmalltalkNil, SmalltalkObject); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 inherits(SmalltalkMethod, SmalltalkObject); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 inherits(SmalltalkPackage, SmalltalkObject); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-inherits(SmalltalkOrganizer, SmalltalkObject); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-inherits(SmalltalkPackageOrganizer, SmalltalkOrganizer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-inherits(SmalltalkClassOrganizer, SmalltalkOrganizer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function OrganizeBrik(brikz, st) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var org = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	org.Organizer = function () {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	inherits(org.Organizer, SmalltalkObject); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	org.PackageOrganizer = function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.elements = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	inherits(org.PackageOrganizer, org.Organizer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	org.ClassOrganizer = function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.elements = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	inherits(org.ClassOrganizer, org.Organizer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	org.setupClassOrganization = function (klass) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		klass.organization = new org.ClassOrganizer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		klass.organization.theClass = klass; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	org.setupPackageOrganization = function (pkg) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pkg.organization = new org.PackageOrganizer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	org.addOrganizationElement = function (owner, element) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		owner.organization.elements.addElement(element); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	org.removeOrganizationElement = function (owner, element) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		owner.organization.elements.removeElement(element); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var nil = global_nil = new SmalltalkNil(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function SmalltalkFactory(brikz, st) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -149,6 +169,7 @@ function SmalltalkFactory(brikz, st) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //	var st = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	brikz.ensure("selectorConversion"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var org = brikz.ensure("organize"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	/* This is the current call context object. While it is publicly available, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Use smalltalk.getThisContext() instead which will answer a safe copy of 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -235,7 +256,7 @@ function SmalltalkFactory(brikz, st) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	function pkg(spec) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		var that = new SmalltalkPackage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		that.pkgName = spec.pkgName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		that.organization = new SmalltalkPackageOrganizer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		org.setupPackageOrganization(that); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		that.properties = spec.properties || {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return that; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -283,10 +304,7 @@ function SmalltalkFactory(brikz, st) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			value: function() { return 'Smalltalk ' + this.className; }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			enumerable:false, configurable: true, writable: false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		klass.organization          = new SmalltalkClassOrganizer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		klass.organization.theClass = klass; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		org.setupClassOrganization(klass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Object.defineProperty(klass, "methods", { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			value: {}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			enumerable: false, configurable: true, writable: true 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -482,7 +500,7 @@ function SmalltalkFactory(brikz, st) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if(wrapped) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			wrappedClasses.addElement(st[className]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		pkg.organization.elements.addElement(st[className]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		org.addOrganizationElement(pkg, st[className]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	/* Create an alias for an existing class */ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -533,11 +551,11 @@ function SmalltalkFactory(brikz, st) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		classes.addElement(st[className]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		pkg.organization.elements.addElement(st[className]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		org.addOrganizationElement(pkg, st[className]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	st.removeClass = function(klass) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		klass.pkg.organization.elements.removeElement(klass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		org.removeOrganizationElement(klass.pkg, klass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		classes.removeElement(klass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		delete st[klass.className]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	}; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -570,7 +588,7 @@ function SmalltalkFactory(brikz, st) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// During the bootstrap, #addCompiledMethod is not used. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// Therefore we populate the organizer here too 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		klass.organization.elements.addElement(method.category); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		org.addOrganizationElement(klass, method.category); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// If already initialized (else it will be done later anyway), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// re-initialize all subclasses to ensure the new method 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -854,6 +872,7 @@ inherits(SmalltalkMethodContext, SmalltalkObject); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var api = new Smalltalk; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var brikz = new Brikz(api); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+brikz.organize = OrganizeBrik; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 brikz.selectorConversion = SelectorConversionBrik; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 brikz.smalltalk = SmalltalkFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 brikz.rebuild(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -916,9 +935,9 @@ smalltalk.Object.klass.superclass = smalltalk.Class; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.wrapClassName("Smalltalk", "Kernel-Objects", Smalltalk, smalltalk.Object, false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.wrapClassName("Package", "Kernel-Objects", SmalltalkPackage, smalltalk.Object, false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.wrapClassName("CompiledMethod", "Kernel-Methods", SmalltalkMethod, smalltalk.Object, false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.wrapClassName("Organizer", "Kernel-Objects", SmalltalkOrganizer, smalltalk.Object, false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.wrapClassName("PackageOrganizer", "Kernel-Objects", SmalltalkPackageOrganizer, smalltalk.Organizer, false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.wrapClassName("ClassOrganizer", "Kernel-Objects", SmalltalkClassOrganizer, smalltalk.Organizer, false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.wrapClassName("Organizer", "Kernel-Objects", brikz.organize.Organizer, smalltalk.Object, false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.wrapClassName("PackageOrganizer", "Kernel-Objects", brikz.organize.PackageOrganizer, smalltalk.Organizer, false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.wrapClassName("ClassOrganizer", "Kernel-Objects", brikz.organize.ClassOrganizer, smalltalk.Organizer, false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.wrapClassName("Number", "Kernel-Objects", Number, smalltalk.Object); 
			 |