code: public function off($name, $handler = null)
      {
          $this->ensureBehaviors();
          if (empty($this->_events[$name]) && empty($this->_eventWildcards[$name])) {
              return false;
          }
          if ($handler === null) {
              unset($this->_events[$name], $this->_eventWildcards[$name]);
              return true;
          }
  
          $removed = false;
          // plain event names
          if (isset($this->_events[$name])) {
              foreach ($this->_events[$name] as $i => $event) {
                  if ($event[0] === $handler) {
                      unset($this->_events[$name][$i]);
                      $removed = true;
                  }
              }
              if ($removed) {
                  $this->_events[$name] = array_values($this->_events[$name]);
                  return $removed;
              }
          }
  
          // wildcard event names
          if (isset($this->_eventWildcards[$name])) {
              foreach ($this->_eventWildcards[$name] as $i => $event) {
                  if ($event[0] === $handler) {
                      unset($this->_eventWildcards[$name][$i]);
                      $removed = true;
                  }
              }
              if ($removed) {
                  $this->_eventWildcards[$name] = array_values($this->_eventWildcards[$name]);
                  // remove empty wildcards to save future redundant regex checks:
                  if (empty($this->_eventWildcards[$name])) {
                      unset($this->_eventWildcards[$name]);
                  }
              }
          }
  
          return $removed;
      }
docs: Detaches an existing event handler from this component.
  
  This method is the opposite of [[on()]].
  
  Note: in case wildcard pattern is passed for event name, only the handlers registered with this
  wildcard will be removed, while handlers registered with plain names matching this wildcard will remain.
  
  @param string $name event name
  @param callable $handler the event handler to be removed.
  If it is null, all handlers attached to the named event will be removed.
  @return bool if a handler is found and detached
  @see on()