private function update(
        Str $variable,
        MapInterface $changeset,
        Query $query
    ): Query {
        return $query
            ->set(sprintf(
                '%s += {%s_props}',
                $variable,
                $variable
            ))
            ->withParameter(
                (string) $variable->append('_props'),
                $changeset->reduce(
                    [],
                    static function(array $carry, string $key, $value): array {
                        $carry[$key] = $value;

                        return $carry;
                    }
                )
            );
    }