code: 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;
      }
docs: 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 {*}