code: function map (data, predicates) {
      assert.object(data);
  
      if (isFunction(predicates)) {
        return mapSimple(data, predicates);
      }
  
      assert.object(predicates);
  
      return mapComplex(data, predicates);
    }
docs: Public function `map`.
  
  Maps each value from the `data` to the corresponding predicate and returns
  the result object. Supports nested objects. If the `data` is not nested and
  the same function is to be applied across all of it, a single predicate
  function may be passed in.