private function resolveRawProgresses(array $rawProgresses): array
    {
        static $callbacks;

        $callbacks = $callbacks ?? [
            self::OP_CPY => function (int $x, int $y): array {
                return [self::OP_CPY, $x - 1, $y - 1, 1];
            },
            self::OP_DEL => function (int $x, int $y): array {
                return [self::OP_DEL, $x - 1, $y, 1];
            },
            self::OP_INS => function (int $x, int $y): array {
                return [self::OP_INS, $x, $y - 1, 1];
            },
            self::OP_REP => function (int $x, int $y): array {
                return [self::OP_REP, $x - 1, $y - 1, 1];
            },
        ];

        foreach ($rawProgresses as &$rawProgress) {
            $rawProgress = $callbacks[$rawProgress[2]](
                $rawProgress[0],
                $rawProgress[1]
            );
        }
        unset($rawProgress);

        return $rawProgresses;
    }