set(prop, val, store = false, autoload = false) {
    var _a3;
    if (prop.startsWith("_") || prop.startsWith("#")) {
      log("warn", "Uib:set", 'Cannot use set() on protected property "'.concat(prop, '"'))();
      return 'Cannot use set() on protected property "'.concat(prop, '"');
    }
    const oldVal = (_a3 = this[prop]) != null ? _a3 : void 0;
    this[prop] = val;
    __privateGet(this, _managedVars)[prop] = prop;
    if (store === true) this.setStore(prop, val, autoload);
    log("trace", "Uib:set", "prop set - prop: ".concat(prop, ", val: "), val, " store: ".concat(store, ", autoload: ").concat(autoload))();
    this._dispatchCustomEvent("uibuilder:propertyChanged", { prop, value: val, oldValue: oldVal, store, autoload });
    this._dispatchCustomEvent("uibuilder:propertyChanged:".concat(prop), { prop, value: val, oldValue: oldVal, store, autoload });
    return val;
  }
Function to set uibuilder properties to a new value - works on any property except _* or #*
Also triggers any event listeners.
Example: this.set('msg', {topic:'uibuilder', payload:42});
@param {string} prop Any uibuilder property who's name does not start with a _ or #
@param {*} val The set value of the property or a string declaring that a protected property cannot be changed
@param {boolean} [store] If true, the variable is also saved to the browser localStorage if possible
@param {boolean} [autoload] If true & store is true, on load, uib will try to restore the value from the store automatically
@returns {*} Input value