docs: function inherit(parent, methods, properties) {
      methods = methods || {};
  
      var Child = methods.hasOwnProperty('constructor') ?
                  methods.constructor : inherit.constructor(parent);
  
      Child.prototype = create(parent.prototype);
      Child.prototype.constructor = Child;
  
      mixin(Child.prototype, methods);
  
      return mixin(Child, parent, properties, {__super__: parent.prototype});
    }