struct Empty {
}

type Elem = int | Empty

fn new_elems(elems ...?int) []Elem {
	mut out := []Elem{}
	for elem in elems {
		if elem == none {
			out << Empty{}
		} else {
			out << elem
		}
	}
	return out
}

fn test_main() {
	elems := new_elems(0, none, 2)
	assert '${elems}' == '[Elem(0), Elem(Empty{}), Elem(2)]'
}
