1(type A extern (enum (B (x u32) (y u32)))) 2 3(decl get_a (A) u32) 4(extern extractor get_a get_a) 5 6(decl pure partial u32_pure (u32) u32) 7(extern constructor u32_pure u32_pure) 8 9(decl entry (u32) u32) 10(rule (entry x @ (get_a a1)) 11 (if-let (get_a a2) x) 12 (if-let (A.B p q) a1) 13 (if-let r (u32_pure p)) 14 r) 15