src/js/libs/spiritual-gui.js
function() {
		var C = gui.Class.extend.apply(this, arguments);
		C.$plugins = gui.Object.copy(this.$plugins);
		return C;
		/*
		 * Mutating plugins deprecated!
		 *
		var args = [],
			def, br = gui.Class.breakdown(arguments);
		["name", "protos", "recurring", "statics"].forEach(function(key) {
			if ((def = br[key])) {
				args.push(def);
			}
		}, this);
		var C = gui.Class.extend.apply(this, args);
		C.$plugins = gui.Object.copy(this.$plugins);
		var b = gui.Class.breakdown(arguments);
		gui.Object.each(C.$plugins, function(prefix, plugin) {
			var def = b.protos[prefix];
			switch (gui.Type.of(def)) {
				case "object":
					var mutant = plugin.extend(def);
					C.plugin(prefix, mutant, true);
					break;
				case "undefined":
					break;
				default:
					throw new TypeError(
						C + ": Bad definition for " + prefix + ': ' + def
					);
			}
		}, this);
		return C;
		*/
	}
function() {
		var C = gui.Class.extend.apply(this, arguments);
		C.$plugins = gui.Object.copy(this.$plugins);
		return C;
		/*
		 * Mutating plugins deprecated!
		 *
		var args = [],
			def, br = gui.Class.breakdown(arguments);
		["name", "protos", "recurring", "statics"].forEach(function(key) {
			if ((def = br[key])) {
				args.push(def);
			}
		}, this);
		var C = gui.Class.extend.apply(this, args);
		C.$plugins = gui.Object.copy(this.$plugins);
		var b = gui.Class.breakdown(arguments);
		gui.Object.each(C.$plugins, function(prefix, plugin) {
			var def = b.protos[prefix];
			switch (gui.Type.of(def)) {
				case "object":
					var mutant = plugin.extend(def);
					C.plugin(prefix, mutant, true);
					break;
				case "undefined":
					break;
				default:
					throw new TypeError(
						C + ": Bad definition for " + prefix + ': ' + def
					);
			}
		}, this);
		return C;
		*/
	}
function ( ) { var C = gui . Class . extend . apply ( this , arguments ) ; C . $plugins = gui . Object . copy ( this . $plugins ) ; return C ; /*
		 * Mutating plugins deprecated!
		 *
		var args = [],
			def, br = gui.Class.breakdown(arguments);
		["name", "protos", "recurring", "statics"].forEach(function(key) {
			if ((def = br[key])) {
				args.push(def);
			}
		}, this);
		var C = gui.Class.extend.apply(this, args);
		C.$plugins = gui.Object.copy(this.$plugins);
		var b = gui.Class.breakdown(arguments);
		gui.Object.each(C.$plugins, function(prefix, plugin) {
			var def = b.protos[prefix];
			switch (gui.Type.of(def)) {
				case "object":
					var mutant = plugin.extend(def);
					C.plugin(prefix, mutant, true);
					break;
				case "undefined":
					break;
				default:
					throw new TypeError(
						C + ": Bad definition for " + prefix + ': ' + def
					);
			}
		}, this);
		return C;
		*/ }
Extend with plugins.
@TODO: move all this to {gui.Class}
@TODO: validate that user isn't declaring non-primitives on the prototype
@param {object} extension
@param {object} recurring
@param {object} statics
@returns {gui.Spirit}
Extend with plugins .