whole_func_string: function mergeOnPropsMulti (obj1, obj2) {
          var args = argsToArray(arguments),
              deep = extractBoolFromArrayStart(args),
              arg0 = args.shift();
  
          // Extend object `0` with other objects
          args.forEach(function (arg) {
              if (!isObject(arg)) {
                  return;
              }
              // Extend `arg0` with `arg`
              mergeOnProps(arg0, arg, deep);
          });
  
          return arg0;
      }
func_code_string: function mergeOnPropsMulti (obj1, obj2) {
          var args = argsToArray(arguments),
              deep = extractBoolFromArrayStart(args),
              arg0 = args.shift();
  
          // Extend object `0` with other objects
          args.forEach(function (arg) {
              if (!isObject(arg)) {
                  return;
              }
              // Extend `arg0` with `arg`
              mergeOnProps(arg0, arg, deep);
          });
  
          return arg0;
      }
func_documentation_string: A strict version of sjl.extend;  I.e., only merges on properties existing on `obj1`.
  @function module:sjl.mergeOnPropsMulti
  @param obj1 {Object|Boolean} - If this param is set to a boolean then deep merge takes place.
  @param [obj2,] {Object} - One or more objects to operate on.
  @note In the case of `obj1` being a boolean method will expect 2 or more objects following param `obj1`.
  @returns {*}