public function delete(Model\RowInterface $row, $force = false)
    {
        $container = $row->getContainer();

        // Skip checks if forced
        if (!$force) {
            // Don't remove container's only row or named row
            if ($row->isAlone() || $row->isNamed()) {
                throw new InvalidOperationException(
                    "The row can't be removed because it is named or the parent container does not have enough children."
                );
            }

            // Don't remove standalone row
            if (null === $container) {
                throw new InvalidOperationException(
                    "The row does not belong to a container and therefore can't be removed."
                );
            }
        }

        $container->removeRow($row);

        $this->editor
            ->getContainerManager()
            ->fixRowsPositions($container);

        return $row;
    }