// generic_enum.bux — Full test: generic enums, value reads, match, multiple instances import Std::Io::{PrintLine, PrintInt}; enum Pair { First(T), Second(U), } func Pair_MakeFirst(value: T) -> Pair { let p: Pair = Pair { tag: Pair_First }; p.data.First_0 = value; return p; } func Pair_MakeSecond(value: U) -> Pair { let p: Pair = Pair { tag: Pair_Second }; p.data.Second_0 = value; return p; } func Main() -> int { // Test 1: tag check + value read let p: Pair = Pair_MakeFirst(42); if p.tag == Pair_First { Print("First value: "); PrintInt(p.data.First_0 as int64); PrintLine(""); } // Test 2: second concrete instance (different types) let s: Pair = Pair_MakeSecond(99); if s.tag == Pair_Second { Print("Second value: "); PrintInt(s.data.Second_0 as int64); PrintLine(""); } return 0; }