code: 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});
    }
docs: /* Public: Creates a new constructor function that inherits from a parent.
  Instance and static methods can also be provided as additional arguments.
  if the methods argument has a property called "constructor" this will be
  used as the constructor function.
  
  Static methods will also be copied over from the parent object. However
  these will not be inheritied prototypally as with the instance methods.
  
  parent     - A constructor Function to inherit from.
  methods    - An Object literal of instance methods that are added to the
  constructors prototype.
  properties - An Object literal of static/class methods to add to the
  constructor itself.
  
  Examples
  
  function MyObject() {};
  
  var SubClass = inherit(MyObject, {method: function () {}});
  var instance = new SubClass();
  
  instance instanceof MyObject //=> true
  
  Returns the new constructor Function.