function compose(SiteUrl $url, array $parameters)
 {
     if ($this->requestPart->is(WebRequestPart::GET)) {
         if (array_key_exists($this->name, $parameters)) {
             $url->addQueryArgument($this->name, (string) $parameters[$this->name]);
         } else {
             if (!$this->isOptional) {
                 if ($this->defaultValue) {
                     $url->addQueryArgument($this->name, $this->defaultValue);
                 } else {
                     // FIXME: use exception
                     Assert::isUnreachable('missing %s parameter', $this->name);
                 }
             }
         }
     }
 }