public function addRealm(Realm $realm)
    {
        $realmName = $realm->getRealmName();

        if (!static::validRealmName($realm->getRealmName())) {
            throw new InvalidRealmNameException;
        }

        if (array_key_exists($realm->getRealmName(), $this->realms)) {
            throw new \Exception('There is already a realm \'' . $realm->getRealmName() . '\'');
        }

        Logger::debug($this, 'Adding realm \'' . $realmName . '\'');

        $this->realms[$realm->getRealmName()] = $realm;

        $this->router->getEventDispatcher()->dispatch('new_realm', new NewRealmEvent($realm));
    }