public function process($uri)
    {
        $interface = $this->getUriInterface($uri);
        $new_uri = $this->execute($uri);
        if ($new_uri instanceof $interface) {
            return $new_uri;
        }

        throw Exception::fromInvalidInterface($interface, $new_uri);
    }