public function regenerateToken()
    {
        do {
            $token = $this->getGenerator()->getBytes(self::TOKEN_LENGTH);
        } while ($token === $this->token);

        $this->token = $token;
        $this->storage->storeToken($this->token);

        return $this;
    }