code: function Widget(id, document) {
      EventEmitter.call(this);
      this.id = id;
      this.el = null;
      this.bodyEl = null;
      this.state = null;
      this.__subscriptions = null;
      this.__evHandles = null;
      this.__lifecycleState = null;
      this.__customEvents = null;
      this.__scope = null;
      this.__dirty = false;
      this.__oldState = null;
      this.__stateChanges = null;
      this.__updateQueued = false;
      this.__dirtyState = null;
      this.__document = document;
  }
docs: Base widget type.
  
  NOTE: Any methods that are prefixed with an underscore should be considered private!