/**
  * Register a new service called `$name` declared as NOT protected by default
  *
  * @param   string          $name
  * @param   object|callable $callback
  * @param   bool            $protected
  * @return  $this
  * @throws  \ErrorException
  */
 public function setService($name, $callback, $protected = false)
 {
     if ($this->hasService($name) && $this->isProtected($name)) {
         throw new ErrorException(sprintf('Over-write service "%s" is forbidden!', $name));
     }
     if ($this->_validateService($name, $callback)) {
         $this->_services->setEntry($name, $callback);
         if ($protected) {
             $this->setProtected($name);
         }
     }
     return $this;
 }