struct Foo[A, B] {
	a A
	b B
}

fn (num Foo[A, B]) get_foo1() (A, B) {
	return num.a, num.b
}

fn (num Foo[A, B]) get_foo2[B, A]() (A, B) {
	return num.a, num.b
}

fn test_generics_with_multi_generics_struct_receiver() {
	num := Foo[int, string]{
		a: 3
		b: 'aaa'
	}
	a1, b1 := num.get_foo1()
	println('${a1}, ${b1}')
	assert a1 == 3
	assert b1 == 'aaa'

	a2, b2 := num.get_foo2()
	println('${a2}, ${b2}')
	assert a2 == 3
	assert b2 == 'aaa'
}
