save(tRef, silently) {

    if (!tRef) {

      tRef = this.fullPath;

    } else if (typeof tRef !== 'string') {

      return;

    }

    // also add an empty text field to guard against
    // https://github.com/Jermolene/TiddlyWiki5/issues/2025
    const fields = {
      title: tRef,
      text: ''
    };

    if (!utils.startsWith(tRef, this.root)) {

      // = not the standard path for storing this type!
      // in this case we add the id to the output.
      fields.id = this.id;

    }

    // allow parsers to transform the raw field data
    for (let field in this._fieldMeta) {

      const stringify = this._fieldMeta[field].stringify;

      fields[field] = (stringify ? stringify.call(this, this[field]) : this[field]);
    }

    if (!this.exists()) { // newly created
      Object.assign(fields, $tw.wiki.getCreationFields());
    }

    if (silently !== true) {
      // add modification date to the output;
      Object.assign(fields, $tw.wiki.getModificationFields());
    }

    $tw.wiki.addTiddler(new $tw.Tiddler(fields));

  }
Store the type object as tiddler in the wiki. If the `tRef`
property is not provided, the default type path prefix
will be used with the type id appended. Stringifiers provided in
the field meta object (that was passed to the constructor) are
called.

@param {string} [tRef] - If `tRef` is provided, the type
    data will be written into this tiddler and the id property
    is added as extra field value. Only do this is only for
    dumping purposes!
@param {boolean} [silently=false] do not update the modification date