whole_func_string: function smash(a, ...rest) {
      rest.forEach(b => {
          if (this.isSmashable(a, b)) // find a way to move isSmashable internal
              this._smash(a, b);
      });
      return a;
  }
func_code_string: function smash(a, ...rest) {
      rest.forEach(b => {
          if (this.isSmashable(a, b)) // find a way to move isSmashable internal
              this._smash(a, b);
      });
      return a;
  }
func_documentation_string: Smashes the properties on the provided arguments into the first argument.
  Any properties on the tail arguments will overwrite
  any existing properties on the first argument.
  
  @param {any} a The target to be smashed.
  @param {...any} rest The tail items to smash onto the target.
  @returns {any} A reference to the smashed target.