public function detach(SplObserver $observer)
    {
        if (!isset($this->__observers)) {
            $this->__observers = new SplObjectStorage;
        }
        $this->__observers->detach($observer);
    }