///|
type Memory[T]
///|
fn Memory::as_pointer[T : Sized](self : Memory[T]) -> Pointer[Byte] = "%identity"
///|
pub(open) trait Sized {
sizeof() -> Int
}
///|
fn moonbit_malloc(size : Int) -> Pointer[Unit] = "$moonbit.malloc"
///|
pub fn Memory::load[T : Sized](memory : Memory[T], offset : Int) -> T {
let self : Pointer[Byte] = moonbit_malloc(T::sizeof()).cast()
let pointer : Pointer[Byte] = memory.as_pointer().cast()
let offset = offset * T::sizeof()
for i in 0.. Unit {
let pointer : Pointer[Byte] = memory.as_pointer().cast()
let value : Pointer[Byte] = Nullable::some(value).as_pointer().cast()
for i in 0..