|  | @@ -369,7 +369,6 @@ define(['require', './brikz.umd', './compatibility'], function (require, Brikz)
 | 
	
		
			
				|  |  |          /* Smalltalk classes */
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          var classes = [];
 | 
	
		
			
				|  |  | -        var detachedRootClasses = [];
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          /* Smalltalk class creation. A class is an instance of an automatically
 | 
	
		
			
				|  |  |           created metaclass object. Newly created classes (not their metaclass)
 | 
	
	
		
			
				|  | @@ -394,7 +393,6 @@ define(['require', './brikz.umd', './compatibility'], function (require, Brikz)
 | 
	
		
			
				|  |  |              setupClass(that, spec);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              that.className = spec.className;
 | 
	
		
			
				|  |  | -            that.detachedRoot = spec.detachedRoot || false;
 | 
	
		
			
				|  |  |              meta.className = spec.className + ' class';
 | 
	
		
			
				|  |  |              meta.superclass = spec.superclass.klass;
 | 
	
		
			
				|  |  |              return that;
 | 
	
	
		
			
				|  | @@ -432,10 +430,10 @@ define(['require', './brikz.umd', './compatibility'], function (require, Brikz)
 | 
	
		
			
				|  |  |              if (typeof superclass == 'undefined' || superclass && superclass.isNil) {
 | 
	
		
			
				|  |  |                  console.warn('Compiling ' + className + ' as a subclass of `nil`. A dependency might be missing.');
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            return rawAddClass(pkgName, className, superclass, iVarNames, null, false);
 | 
	
		
			
				|  |  | +            return rawAddClass(pkgName, className, superclass, iVarNames, null);
 | 
	
		
			
				|  |  |          };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        function rawAddClass(pkgName, className, superclass, iVarNames, fn, detachedRoot) {
 | 
	
		
			
				|  |  | +        function rawAddClass(pkgName, className, superclass, iVarNames, fn) {
 | 
	
		
			
				|  |  |              var pkg = st.packages[pkgName];
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              if (!pkg) {
 | 
	
	
		
			
				|  | @@ -464,8 +462,7 @@ define(['require', './brikz.umd', './compatibility'], function (require, Brikz)
 | 
	
		
			
				|  |  |                      superclass: superclass,
 | 
	
		
			
				|  |  |                      pkg: pkg,
 | 
	
		
			
				|  |  |                      iVarNames: iVarNames,
 | 
	
		
			
				|  |  | -                    fn: fn,
 | 
	
		
			
				|  |  | -                    detachedRoot: detachedRoot
 | 
	
		
			
				|  |  | +                    fn: fn
 | 
	
		
			
				|  |  |                  });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  addSubclass(theClass);
 | 
	
	
		
			
				|  | @@ -495,24 +492,30 @@ define(['require', './brikz.umd', './compatibility'], function (require, Brikz)
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        var detachedRootClasses = [];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          /* Create a new class coupling with a JavaScript constructor,
 | 
	
		
			
				|  |  |           optionally detached root, and add it to the global smalltalk object.*/
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          st.addDetachedRootClass = function (className, superclass, pkgName, fn) {
 | 
	
		
			
				|  |  | -            var klass = rawAddClass(pkgName, className, superclass, null, fn, true);
 | 
	
		
			
				|  |  | -            detachedRootClasses.addElement(klass);
 | 
	
		
			
				|  |  | +            var klass = rawAddClass(pkgName, className, superclass, null, fn);
 | 
	
		
			
				|  |  | +            markClassDetachedRoot(klass);
 | 
	
		
			
				|  |  |              return klass;
 | 
	
		
			
				|  |  |          };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        function markClassDetachedRoot(klass) {
 | 
	
		
			
				|  |  | +            detachedRootClasses.addElement(klass);
 | 
	
		
			
				|  |  | +            klass.detachedRoot = true;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          st.addCoupledClass = function (className, superclass, pkgName, fn) {
 | 
	
		
			
				|  |  | -            return rawAddClass(pkgName, className, superclass, null, fn, false);
 | 
	
		
			
				|  |  | +            return rawAddClass(pkgName, className, superclass, null, fn);
 | 
	
		
			
				|  |  |          };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          /* Manually set the constructor of an existing Smalltalk klass, making it a detached root class. */
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          st.setClassConstructor = function (klass, constructor) {
 | 
	
		
			
				|  |  | -            detachedRootClasses.addElement(klass);
 | 
	
		
			
				|  |  | -            klass.detachedRoot = true;
 | 
	
		
			
				|  |  | +            markClassDetachedRoot(klass);
 | 
	
		
			
				|  |  |              klass.fn = constructor;
 | 
	
		
			
				|  |  |              initClass(klass);
 | 
	
		
			
				|  |  |          };
 |