code: function(r, s) {
          if (!s||!r) {
              throw new Error("Absorb failed, verify dependencies.");
          }
          var a=arguments, i, p, overrideList=a[2];
          if (overrideList && overrideList!==true) { // only absorb the specified properties
              for (i=2; i<a.length; i=i+1) {
                  r[a[i]] = s[a[i]];
              }
          } else { // take everything, overwriting only if the third parameter is true
              for (p in s) { 
                  if (overrideList || !(p in r)) {
                      r[p] = s[p];
                  }
              }
              
              L._IEEnumFix(r, s);
          }
      }
docs: Applies all properties in the supplier to the receiver if the
  receiver does not have these properties yet.  Optionally, one or
  more methods/properties can be specified (as additional
  parameters).  This option will overwrite the property if receiver
  has it already.  If true is passed as the third parameter, all
  properties will be applied and _will_ overwrite properties in
  the receiver.
  
  @method augmentObject
  @static
  @since 2.3.0
  @param {Function} r  the object to receive the augmentation
  @param {Function} s  the object that supplies the properties to augment
  @param {String*|boolean}  arguments zero or more properties methods
  to augment the receiver with.  If none specified, everything
  in the supplier will be used unless it would
  overwrite an existing property in the receiver. If true
  is specified as the third parameter, all properties will
  be applied and will overwrite an existing property in
  the receiver