text: "use strict";
  
  /**
   * The purpose of this function is
   * to handle back-backwards compatibility
   * @param {Object} args
   * @returns {{config: {}, cb: *}}
   */
  module.exports = function(args) {
      var config = {};
      var cb;
  
      switch (args.length) {
          case 1:
              if (isFilesArg(args[0])) {
                  config.files = args[0];
              } else if (typeof args[0] === "function") {
                  cb = args[0];
              } else {
                  config = args[0];
              }
  
              break;
  
          case 2:
              // if second is a function, first MUST be config
              if (typeof args[1] === "function") {
                  config = args[0] || {};
                  cb = args[1];
              } else {
                  if (args[1] === null || args[1] === undefined) {
                      config = args[0];
                  } else {
                      // finally, second arg could be a plain object for config
                      config = args[1] || {};
  
                      if (!config.files) {
                          config.files = args[0];
                      }
                  }
              }
  
              break;
  
          case 3:
              config = args[1] || {};
  
              if (!config.files) {
                  config.files = args[0];
              }
  
              cb = args[2];
      }
  
      return {
          config: config,
          cb: cb
      };
  };
  
  /**
   * Files args were only ever strings or arrays
   * @param arg
   * @returns {*|boolean}
   */
  function isFilesArg(arg) {
      return Array.isArray(arg) || typeof arg === "string";
  }
  