type CastBag {
    byte: u8,
    count: u32,
    size: usize,
    signed: isize,
}

fn narrow(value: u32) -> u8 {
    return value as u8
}

fn widen(value: u8) -> u32 {
    return value as u32
}

fn toSize(value: i32) -> usize {
    return value as usize
}

pub fn main(world: World) -> Void raises {
    let big: u32 = 300
    let small: u8 = 42
    let byte: u8 = big as u8
    let count: u32 = small as u32
    let size: usize = count as usize
    let offset: isize = small as isize
    let sum: u16 = small as u16 + 1 as u16
    let bag: CastBag = CastBag { byte: big as u8, count: small as u32, size: count as usize, signed: small as isize }
    if byte == 44 && count == 42 && size == 42 && offset == 42 && sum == 43 && narrow(big) == 44 && widen(small) == 42 && toSize(7) == 7 && bag.byte == 44 {
        check world.out.write("explicit casts ok\n")
    }
}
