docs: function inheritFrom(parentConstructor, childConstructor, prototypeProps, constructorProps) {
    // Create a child constructor if one wasn't given
    if (childConstructor == null) {
      childConstructor = function() {
        parentConstructor.apply(this, arguments)
      }
    }
  
    // Make sure the new prototype has the correct constructor set up
    prototypeProps.constructor = childConstructor
  
    // Base constructors should only have the properties they're defined with
    if (parentConstructor !== Concur) {
      // Inherit the parent's prototype
      inherits(childConstructor, parentConstructor)
      childConstructor.__super__ = parentConstructor.prototype
    }
  
    // Add prototype properties - this is why we took a copy of the child
    // constructor reference in extend() - if a .constructor had been passed as a
    // __mixins__ and overitten prototypeProps.constructor, these properties would
    // be getting set on the mixed-in constructor's prototype.
    extend(childConstructor.prototype, prototypeProps)
  
    // Add constructor properties
    extend(childConstructor, constructorProps)
  
    return childConstructor
  }