ScatterNNlib: array mutation not supported

I know that Zygote.jl doesn’t support array mutation. I tried to use ScatterNNlib.gather but It shows array mutation error:

using Flux
using ScatterNNlib

f(x) = gather(x, [1 3; 4 2], 2)
gradient(x -> f(x), rand(4,4))

Let us look at ScatterNNlib.gather:

function gather(input::AbstractArray{T,N}, index::AbstractArray{<:Integer,N}, dims::Integer) where {T,N}
    @assert dims <= N "Specified dimensions must lower or equal to the rank of input matrix."
    out = similar(index, T)
    @inbounds for x = CartesianIndices(out)
        tup = collect(Tuple(x))
        tup[dims] = index[x]
        view(out, x) .= view(input, tup...)
    end
    return out
end

Why does this line mutates an array? Where is Zygote.Buffer?
view(out, x) .= view(input, tup...)