function assignOne(dst, src) {
    if (src) {
      // We need to copy regular props, symbols, getters and setters.
      for (const key of getOwnPropertyKeys(src)) {
        const desc = Object.getOwnPropertyDescriptor(src, key);
        // Make it rewritable because two stamps can have same named getter/setter
        Object.defineProperty(dst, key, desc);
      }
    }
    return dst;
  }
Unlike Object.assign(), our assign() copies symbols, getters and setters.
@param {Object} dst Must be an object. Otherwise throws.
@param {Object} [src] Can be falsy
@returns {Object} updated 'dst'