lib/mixin.js
function Mixin_addMethod(hostClass, instanceKey, mixinMethodName, hostMethodName) {
    var method = this.prototype[mixinMethodName];
    check(method, Function);

    var wrappedMethod = _wrapMixinMethod.call(this, method);

    Object.defineProperty(hostClass.prototype, hostMethodName, {
        value: wrappedMethod,
        enumerable: false,
        configurable: false,
        writable: true
    });

    Mixin_setInstanceKey(hostClass, method, instanceKey);
}
function Mixin_addMethod(hostClass, instanceKey, mixinMethodName, hostMethodName) {
    var method = this.prototype[mixinMethodName];
    check(method, Function);

    var wrappedMethod = _wrapMixinMethod.call(this, method);

    Object.defineProperty(hostClass.prototype, hostMethodName, {
        value: wrappedMethod,
        enumerable: false,
        configurable: false,
        writable: true
    });

    Mixin_setInstanceKey(hostClass, method, instanceKey);
}
function Mixin_addMethod ( hostClass , instanceKey , mixinMethodName , hostMethodName ) { var method = this . prototype [ mixinMethodName ] ; check ( method , Function ) ; var wrappedMethod = _wrapMixinMethod . call ( this , method ) ; Object . defineProperty ( hostClass . prototype , hostMethodName , { value : wrappedMethod , enumerable : false , configurable : false , writable : true } ) ; Mixin_setInstanceKey ( hostClass , method , instanceKey ) ; }
Adds method of Mixin subclass to host class prototype.

@private
@param {Function} this Mixin subclass (not instance)
@param {String} mixinMethodName name of method in Mixin subclass
@param {String} hostMethodName (optional) name of created proxy method on host object, same if not specified
@param {Object} hostObject object class, must be specified as the last parameter (2nd or 3rd)
Adds method of Mixin subclass to host class prototype .