julia> A = Tensor(Dense(SparseList(Element(0.0))), [0 0 3.3; 1.1 0 0; 2.2 0 4.4; 0 0 5.5])
4×3 Tensor{DenseLevel{Int32, SparseListLevel{Int32, Vector{Int32}, Vector{Int32}, ElementLevel{0.0, Float64, Int32, Vector{Float64}}}}}:
 0.0  0.0  3.3
 1.1  0.0  0.0
 2.2  0.0  4.4
 0.0  0.0  5.5
julia> y = Tensor([1.0, 2.0, 3.0, 4.0])
4 Tensor{DenseLevel{Int32, ElementLevel{0.0, Float64, Int32, Vector{Float64}}}}:
 1.0
 2.0
 3.0
 4.0
julia> x = Tensor([1, 2, 3])
3 Tensor{DenseLevel{Int32, ElementLevel{0, Int32, Int32, Vector{Int32}}}}:
 1
 2
 3
julia> @finch_code begin
        y .= 0
        for j = _
            for i = _
                y[i] += A[i, j] * x[j]
            end
        end
    end
quote
    y_lvl = ((ex.bodies[1]).bodies[1]).tns.bind.lvl
    y_lvl_2 = y_lvl.lvl
    y_lvl_2_val = y_lvl_2.val
    A_lvl = (((ex.bodies[1]).bodies[2]).body.body.rhs.args[1]).tns.bind.lvl
    A_lvl_stop = A_lvl.shape
    A_lvl_2 = A_lvl.lvl
    A_lvl_2_ptr = A_lvl_2.ptr
    A_lvl_2_idx = A_lvl_2.idx
    A_lvl_2_stop = A_lvl_2.shape
    A_lvl_3 = A_lvl_2.lvl
    A_lvl_3_val = A_lvl_3.val
    x_lvl = (((ex.bodies[1]).bodies[2]).body.body.rhs.args[2]).tns.bind.lvl
    x_lvl_stop = x_lvl.shape
    x_lvl_2 = x_lvl.lvl
    x_lvl_2_val = x_lvl_2.val
    x_lvl_stop == A_lvl_stop || throw(DimensionMismatch("mismatched dimension limits ($(x_lvl_stop) != $(A_lvl_stop))"))
    Finch.resize_if_smaller!(y_lvl_2_val, A_lvl_2_stop)
    Finch.fill_range!(y_lvl_2_val, 0.0, 1, A_lvl_2_stop)
    for j_4 = 1:x_lvl_stop
        x_lvl_q = (1 - 1) * x_lvl_stop + j_4
        A_lvl_q = (1 - 1) * A_lvl_stop + j_4
        x_lvl_2_val_2 = x_lvl_2_val[x_lvl_q]
        A_lvl_2_q = A_lvl_2_ptr[A_lvl_q]
        A_lvl_2_q_stop = A_lvl_2_ptr[A_lvl_q + 1]
        if A_lvl_2_q < A_lvl_2_q_stop
            A_lvl_2_i1 = A_lvl_2_idx[A_lvl_2_q_stop - 1]
        else
            A_lvl_2_i1 = 0
        end
        phase_stop = min(A_lvl_2_stop, A_lvl_2_i1)
        if phase_stop >= 1
            if A_lvl_2_idx[A_lvl_2_q] < 1
                A_lvl_2_q = Finch.scansearch(A_lvl_2_idx, 1, A_lvl_2_q, A_lvl_2_q_stop - 1)
            end
            while true
                A_lvl_2_i = A_lvl_2_idx[A_lvl_2_q]
                if A_lvl_2_i < phase_stop
                    A_lvl_3_val_2 = A_lvl_3_val[A_lvl_2_q]
                    y_lvl_q = (1 - 1) * A_lvl_2_stop + A_lvl_2_i
                    y_lvl_2_val[y_lvl_q] = x_lvl_2_val_2 * A_lvl_3_val_2 + y_lvl_2_val[y_lvl_q]
                    A_lvl_2_q += 1
                else
                    phase_stop_3 = min(phase_stop, A_lvl_2_i)
                    if A_lvl_2_i == phase_stop_3
                        A_lvl_3_val_2 = A_lvl_3_val[A_lvl_2_q]
                        y_lvl_q = (1 - 1) * A_lvl_2_stop + phase_stop_3
                        y_lvl_2_val[y_lvl_q] += x_lvl_2_val_2 * A_lvl_3_val_2
                        A_lvl_2_q += 1
                    end
                    break
                end
            end
        end
    end
    resize!(y_lvl_2_val, A_lvl_2_stop)
    (y = Tensor((DenseLevel){Int32}(ElementLevel{0.0, Float64, Int32}(y_lvl_2_val), A_lvl_2_stop)),)
end
julia> @finch begin
        y .= 0
        for j = _
            for i = _
                y[i] += A[i, j] * x[j]
            end
        end
    end
(y = Tensor(Dense{Int32}(Element{0.0, Float64, Int32}([9.899999999999999, 1.1, 15.400000000000002, 16.5]), 4)),)

