docs: function borrowFromVanilla(params, constructor) {
          var key,
              value;
  
          // Grab mixin members
          for (key in params) {
              // Ignore the constructor
              if (/^(_){0,2}initialize$/.test(key)) {
                  continue;
              }
  
              value = params[key];
  
              if (!hasOwn(constructor.prototype, key)) {    // Already defined members are not overwritten
                  if (isFunction(value) && !value[$class] && !value[$interface]) {
                      constructor.prototype[key] = wrapMethod(key, value, constructor);
  
                      // If the function is specified to be bound, add it to the binds
                      if (value[$bound]) {
                          insert(constructor[$class].binds, key);
                      }
                  } else {
                      constructor.prototype[key] = value;
                      if (!isImmutable(value)) {
                          insert(constructor[$class].properties, key);
                      }
                  }
              }
          }
  
      }