docs: function normalizeObject(val) {
    if (val.hasOwnProperty('path')) {
      val.src = val.path;
    }
  
    val = normalizeOptions(val);
  
    if (val.options && val.options.files) {
      var config = {};
      config.files = val.options.files;
      delete val.options.files;
      return normalize(config, val);
    }
  
    // if src/dest are on options, move them to root
    val = utils.move(val, 'src');
    val = utils.move(val, 'dest');
  
    // allow src to be a getter
    if ('src' in val || val.hasOwnProperty('dest')) {
      return toFiles(val);
    }
  
    if (!val.hasOwnProperty('files')) {
      return filesObjects(val);
    }
  
    if (Array.isArray(val.files)) {
      return reduceFiles(val.files, val);
    }
  
    if (val.files && !utils.isObject(val.files)) {
      throw new TypeError('expected "files" to be an array or object');
    }
  
    val.files = normalizeFiles(val);
    return val;
  }