private function isSaleItemCovered(Common\SaleItemInterface $saleItem, array $coveredIds)
    {
        // Skip compound with only public children
        if ($saleItem->isCompound() && !$saleItem->hasPrivateChildren()) {
            return true;
        }

        if (!in_array($saleItem->getId(), $coveredIds, true)) {
            return false;
        }

        foreach ($saleItem->getChildren() as $child) {
            if (!$this->isSaleItemCovered($child, $coveredIds)) {
                return false;
            }
        }

        return true;
    }