assignId(tiddler, isForce) {

    // Note: always reload from store to avoid setting wrong ids on tiddler
    // being in the role of from and to at the same time.
    const tObj = utils.getTiddler(tiddler);

    if (!tObj) {
      throw new ResourceNotFoundException(tiddler);
    }

    let id = tObj.fields['tmap.id'];

    if (!id || isForce) {
      id = utils.genUUID();
      utils.setField(tObj, 'tmap.id', id);
      this.logger('info', 'Assigning new id to', tObj.fields.title);
    }

    // blindly update the index IN ANY CASE because tiddler may have
    // an id but it is not indexed yet (e.g. because of renaming operation)
    this.tById[id] = tObj.fields.title;
    this.idByT[tObj.fields.title] = id;

    return id;

  }
This method will assign an id to an *existing* tiddler that does
not already possess and id. Any assigned id will be registered
at the id->tiddler index.

@param {Tiddler} tiddler - The tiddler to assign the id to.
@param {boolean} isForce - True if the id should be overridden,
    false otherwise. Only works if the id field is not set to title.

@return {Id} The assigned or retrieved id.