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); } } } } }