sjl.js
function makeExtendableConstructor (constructor) {
        var extender = function (constructor_, methods_, statics_) {
            return defineSubClass(constructor, constructor_, methods_, statics_);
        };

        /**
         * Extends a new copy of self with passed in parameters.
         * @memberof class:sjl.stdlib.Extendable
         * @static sjl.stdlib.Extendable.extend
         * @param constructor {Function|Object} - Required.  Note: if is an object, then other params shift over by 1 (`methods` becomes `statics` and this param becomes `methods`).
         * @param methods {Object|undefined} - Methods.  Optional.  Note:  If `constructor` param is an object, this gets cast as `statics` param.  Also for overriding
         * @param statics {Object|undefined} - Static methods.  Optional.  Note:  If `constructor` param is an object, it is not used.
         */
        constructor.extend =
            constructor.extendWith =
                extender;

        // Return constructor
        return constructor;
    }
function makeExtendableConstructor (constructor) {
        var extender = function (constructor_, methods_, statics_) {
            return defineSubClass(constructor, constructor_, methods_, statics_);
        };

        /**
         * Extends a new copy of self with passed in parameters.
         * @memberof class:sjl.stdlib.Extendable
         * @static sjl.stdlib.Extendable.extend
         * @param constructor {Function|Object} - Required.  Note: if is an object, then other params shift over by 1 (`methods` becomes `statics` and this param becomes `methods`).
         * @param methods {Object|undefined} - Methods.  Optional.  Note:  If `constructor` param is an object, this gets cast as `statics` param.  Also for overriding
         * @param statics {Object|undefined} - Static methods.  Optional.  Note:  If `constructor` param is an object, it is not used.
         */
        constructor.extend =
            constructor.extendWith =
                extender;

        // Return constructor
        return constructor;
    }
function makeExtendableConstructor ( constructor ) { var extender = function ( constructor_ , methods_ , statics_ ) { return defineSubClass ( constructor , constructor_ , methods_ , statics_ ) ; } ; /**
         * Extends a new copy of self with passed in parameters.
         * @memberof class:sjl.stdlib.Extendable
         * @static sjl.stdlib.Extendable.extend
         * @param constructor {Function|Object} - Required.  Note: if is an object, then other params shift over by 1 (`methods` becomes `statics` and this param becomes `methods`).
         * @param methods {Object|undefined} - Methods.  Optional.  Note:  If `constructor` param is an object, this gets cast as `statics` param.  Also for overriding
         * @param statics {Object|undefined} - Static methods.  Optional.  Note:  If `constructor` param is an object, it is not used.
         */ constructor . extend = constructor . extendWith = extender ; // Return constructor return constructor ; }
Adds `extend` and `extendWith` static methods to the passed in constructor for having easy extensibility via said
methods;  I.e., passed in constructor will now be extendable via added methods.
@see sjl.defineSubClass(superClass, constructor, methods, statics)
@function module:sjl.makeExtendableConstructor
@param constructor {Function}
@returns {*}
Adds extend and extendWith static methods to the passed in constructor for having easy extensibility via said methods ; I . e . passed in constructor will now be extendable via added methods .