data D | C itf Z { x = sem :: Z of x@D.C = 3 main :: IO () main = return () }