struct Left[E] {
	error E
}

struct Right[T] {
	inner T
}

type Either[T, E] =
	Left[E] |
	Right[T]

fn works(v []Either[int, int]) {
	first := v[0]
	match first {
		Left[int] {
			println(first.error)
		}
		else {}
	}
}

fn doesntwork(v []Either[int, int]) {
	match v[0] {
		Left[int] {
			println(v[0].error)
		}
		else {}
	}
}

fn main() {}
