public function detach(LazyCallbackHandler $listener)
    {
        $service = $listener->getMetadatum('service');
        $service = $this->normalizeServiceName($service);
        
        if (!$service || empty($this->services[$service])) {
            return false;
        }
        
        $return = $this->services[$service]->remove($listener);
        if (!$return) {
            return false;
        }
        
        if (!count($this->services[$service])) {
            unset($this->services[$service]);
        }
        
        return true;
    }