writeKey(key) {
    const clock = this.keyMap.get(key);

    if (clock === undefined) {
      this.keyClockEncoder.write(this.keyClock++);
      this.stringEncoder.write(key);
    } else {
      this.keyClockEncoder.write(this.keyClock++);
    }
  }
Property keys are often reused. For example, in y-prosemirror the key `bold` might
occur very often. For a 3d application, the key `position` might occur very often.

We cache these keys in a Map and refer to them via a unique number.

@param {string} key