docs: function writeValue(value, fieldSchema) {
          // onBeforeValueSet allows you to cancel the operation.
          // It doesn't work like transform and others that allow you to modify the value because all typecast has already happened.
          // For use-cases where you need to modify the value, you can set a new value in the handler and return false.
          if (this[_privateKey]._options.onBeforeValueSet) {
              if (this[_privateKey]._options.onBeforeValueSet.call(this, value, fieldSchema.name) === false) {
                  return;
              }
          }
  
          // Alias simply copies the value without actually writing it to alias index.
          // Because the value isn't actually set on the alias index, onValueSet isn't fired.
          if (fieldSchema.type === 'alias') {
              this[fieldSchema.index] = value;
              return;
          }
  
          // Write the value to the inner object.
          this[_privateKey]._obj[fieldSchema.name] = value;
  
          // onValueSet notifies you after a value has been written.
          if (this[_privateKey]._options.onValueSet) {
              this[_privateKey]._options.onValueSet.call(this, value, fieldSchema.name);
          }
      }