private function buildChildOperationButton($idParameter, $itemId, $href, $label, $name, $icon, $attributes, $table)
    {
        $modelId = ModelId::fromValues($table, $itemId);

        $url = $href . '&amp;' . $idParameter . '=' . $modelId->getSerialized();
        // If id parameter different, we have to override it in the URL.
        if ('id' !== $idParameter) {
            $url .= '&amp;id=';
        }
        $url = $this->controller->addToUrl($url);
        // If id parameter different, we have to clean out the id in the URL now.
        if ('id' !== $idParameter) {
            $url = preg_replace('#(&amp;)id=(?:&amp;)?#', '$1', $url);
        }

        $title = sprintf($label ?: $name, $itemId);
        return sprintf(
            '<a href="%1$s" title="%2$s"%3$s>%4$s</a> ',
            $url,
            specialchars($title),
            $attributes,
            $this->iconBuilder->getBackendIconImageTag($icon, $label)
        );
    }