code: function registerWish(wish) {
    if (_isArray(wish)) {
      const wishesRegistered = []
      _each(wish, w => {
        wishesRegistered.push(registerWish(w))
      })
      return wishesRegistered
    } else {
      const newWish = _createWish(wish)
      const existingWishIndex = _getWishIndexById(newWish.id)
      if (existingWishIndex < 0) {
        _wishes.push(newWish)
      } else {
        _wishes[existingWishIndex] = newWish
      }
  
      return newWish
    }
  }
docs: The object used for genie's matching algorithm.
  @typedef {object} EnteredMagicWords
  @property {EnteredMagicLetter}
  @property {Array.<string>} wishIds
   
  **Note:** This is actually assigned to the `genie` variable, so
  it is called like so: `genie({wish: object});`
  
  Creates and registers a new wish with the given pseudo wish(es).
  @param {object|Array.<object>} wish pseudo wish(es)
  @returns {wish|Array.<wish>} The registered wish or array of wishes.
  @public