whole_func_string: function deepAssign() {
    for (var _len = arguments.length, args = Array(_len), _key2 = 0; _key2 < _len; _key2++) {
      args[_key2] = arguments[_key2];
    }
  
    if (args.length < 2) {
      throw new Error('deepAssign accept two and more argument');
    }
    for (var i = args.length - 1; i > -1; i--) {
      if (isPrimitive(args[i])) {
        throw new TypeError('deepAssign only accept non primitive type');
      }
    }
    var target = args.shift();
    args.forEach(function (source) {
      return _deepAssign(source, target);
    });
    return target;
  }
func_code_string: function deepAssign() {
    for (var _len = arguments.length, args = Array(_len), _key2 = 0; _key2 < _len; _key2++) {
      args[_key2] = arguments[_key2];
    }
  
    if (args.length < 2) {
      throw new Error('deepAssign accept two and more argument');
    }
    for (var i = args.length - 1; i > -1; i--) {
      if (isPrimitive(args[i])) {
        throw new TypeError('deepAssign only accept non primitive type');
      }
    }
    var target = args.shift();
    args.forEach(function (source) {
      return _deepAssign(source, target);
    });
    return target;
  }
func_documentation_string: merge multiple objects
  @param  {...Object} args [description]
  @return {merge-object}         [description]