code: function Mixin(hostObject, proxyMethods) { // , other args - passed to init method
      check(hostObject, Match.Optional(Match.OneOf(Object, Function)));
  
      // store hostObject
      Object.defineProperty(this, '_hostObject', { value: hostObject });
  
      // proxy methods to hostObject
      if (proxyMethods)
          this._createProxyMethods(proxyMethods);
  
      // calling init if it is defined in the class
      if (this.init)
          this.init.apply(this, arguments);
  }
docs: `milo.classes.Mixin` - an abstract Mixin class.
  Can be subclassed using protojs for example:
  ```
  var MyMixin = _.createSubclass(milo.classes.Mixin, 'MyMixin');
  ```
  
  Mixin pattern is also used, but Mixin in milo is implemented as a separate object that is stored on the property of the host object and can create proxy methods on the host object if required.
  Classes [Messenger](../messenger/index.js.html) and [MessageSource](../messenger/m_source.js.html) are subclasses of Mixin abstract class. `this` in proxy methods refers to Mixin instance, the reference to the host object is `this._hostObject`.
  
  @param {Object} hostObject Optional object where a Mixin instance will be stored on. It is used to proxy methods and also to find the reference when it is needed for host object implementation.
  @param {Object} proxyMethods Optional map of proxy method names as keys and Mixin methods names as values, so proxied methods can be renamed to avoid name-space conflicts if two different Mixin instances with the same method names are put on the object
  @param {List} arguments all constructor arguments will be passed to init method of Mixin subclass together with hostObject and proxyMethods
  @return {Mixin}