code: func Union(a, b interface{}) interface{} {
  	chk := ty.Check(
  		new(func(map[ty.A]bool, map[ty.A]bool) map[ty.A]bool),
  		a, b)
  	va, vb, tc := chk.Args[0], chk.Args[1], chk.Returns[0]
  
  	vtrue := reflect.ValueOf(true)
  	vc := reflect.MakeMap(tc)
  	for _, vkey := range va.MapKeys() {
  		vc.SetMapIndex(vkey, vtrue)
  	}
  	for _, vkey := range vb.MapKeys() {
  		vc.SetMapIndex(vkey, vtrue)
  	}
  	return vc.Interface()
  }
docs: // Union has a parametric type:
  //
  //	func Union(a map[A]bool, b map[A]bool) map[A]bool
  //
  // Union returns the union of two sets, where a set is represented as a
  // `map[A]bool`. The sets `a` and `b` are not modified.