docs: function(signal, arg, emitter) {
              var widget = this,
              slot;
              if (typeof emitter === 'undefined') emitter = this;
              console.log("fire(" + signal + ")", arg);
              if (signal.charAt(0) == '@') {
                  // This is a global signal.
                  slot = $$.statics("WTag");
                  if (slot) {
                      slot = slot.globalSlots[signal];
                      if (slot) {
                          slot[1].call(slot[0], arg, signal, emitter);
                      } else {
                          console.error(
                              "[WTag.fire] Nothing is binded on global signal \""
                                  + signal + "\"!"
                          );
                      }
                  }
              }
              if (signal.charAt(0) == '$') {
                  // Assign a value to a data.
                  this.data(signal.substr(1).trim(), arg);
              }
              else {
                  while (widget) {
                      slot = widget._slots[signal];
                      if (typeof slot === 'function') {
                          if (false !== slot.call(widget, arg, signal, emitter)) {
                              return;
                          }
                      }
                      widget = widget.parentWidget();
                  }
                  console.warning("Signal lost: " + signal + "!");
              }
          }