code: function inherits (constructor, superConstructor) {
                      if (constructor === undefined || constructor === null)
                          throw new TypeError('The constructor to "inherits" must not be ' + 'null or undefined');
  
                      if (superConstructor === undefined || superConstructor === null)
                          throw new TypeError('The super constructor to "inherits" must not ' + 'be null or undefined');
  
                      if (superConstructor.prototype === undefined)
                          throw new TypeError('The super constructor to "inherits" must ' + 'have a prototype');
  
                      constructor.super_ = superConstructor;
                      Object.setPrototypeOf(constructor.prototype, superConstructor.prototype);
  
                      // Kill al the ProtoLib cache, for all instances...
                      ProtoLib.killCacheForConstructor(constructor);
                      return constructor;
                  }
docs: Inherit the prototype methods from one constructor into another.
  Mostly borrowed directly from Node.js
  @param {Function} constructor The inheriting constructor
  @param {Function} superConstructor The parent constructor
  @return {Function} The inheriting constructor