fn setLast(values: MutSpan<i32>) -> Void {
    values[2] = 30
}

fn second(values: Span<i32>) -> i32 {
    return values[1]
}

pub fn main(world: World) -> Void raises {
    var values: [3]i32 = [1, 2, 3]
    let expected: [3]i32 = [1, 20, 30]
    let expectedSpan: Span<i32> = expected
    let span: MutSpan<i32> = values
    let readonly: Span<i32> = span
    var bytes: [16]u8 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    span[1] = 20
    setLast(span)
    let readCount: usize = std.fs.read("conformance/fixtures/std-fs-read.txt", bytes)
    if values[1] == 20 && values[2] == 30 && second(span) == 20 && std.mem.len(span) == 3 && std.mem.eqlBytes(span, expectedSpan) && readonly[2] == 30 && readCount > 0 {
        check world.out.write("mutable spans ok\n")
    }
}
