struct Aaa {
	i int
}

type AAaa = Aaa

type Arr = []int

type ArrAaa = Aaa | Arr

fn main() {
	println(Aaa{} == 10)
	println(10 == Aaa{})
	println(Aaa{} != 10)
	println(10 != Aaa{})

	println(Aaa{0} == AAaa{0})
	println(AAaa{0} == Aaa{0})
	println(AAaa{1} != Aaa{1})
	println(Aaa{1} != AAaa{1})

	arr := Arr([0])
	println(arr == [0])
	println([1] == arr)
	println(arr != [0])
	println([1] != arr)

	arr_aaa := ArrAaa(arr)
	println(arr_aaa == arr)
	println(arr == arr_aaa)
	println(arr_aaa != arr)
	println(arr != arr_aaa)

	println(arr_aaa == [0])
	println([1] == arr_aaa)
	println(arr_aaa != [0])
	println([1] != arr_aaa)
}
