public function addInsert(array $rows): self
    {
        if (!empty($rows) && !is_array(reset($rows))) {
            $rows = [$rows];
        }

        foreach ($rows as $index => $row) {
            if (!is_array($row)) {
                return $this->handleException(InvalidArgumentException::create(
                    'Argument $rows['.$index.']',
                    $row,
                    ['array']
                ));
            }

            $filteredRow = [];

            foreach ($row as $column => $value) {
                if (!is_string($column)) {
                    return $this->handleException(InvalidArgumentException::create(
                        'The argument $rows['.$index.'] indexes',
                        $column,
                        ['string']
                    ));
                }

                $value = $this->checkScalarOrNullValue('Argument $rows['.$index.']['.$column.']', $value);
                $filteredRow[$column] = $value;
            }

            $this->insert[] = $filteredRow;
        }

        return $this;
    }