let [%patternExtension ] = ()
let [%pattern.extension ] = ()
let [%raw {js|x|js}] = ()
let ([%raw {js|x|js}] : unit) = ()
let [%raw {js|x|js}] as y = ()
let [%patExt1 ]|[%patExt2 ] = ()
;;match x with
  | [%patternExtension ] -> ()
  | [%pattern.extension ] -> ()
  | [%pat.stuff test] -> ()
  | [%pat.stuff test] as _x -> ()
  | ([%pat.stuff test] : unit) -> ()
  | [%patExt1 ]|[%patExt2 ] -> ()
let f [arity:1][%patternExtension ] = ()
let f [arity:1][%pattern.extension ] = ()
let f [arity:1][%raw {js|x|js}] = ()
let f [arity:2][%raw {js|x|js}] [%raw {js|y|js}] = ()
let f [arity:1]([%raw {js|x|js}] as _y) = ()
let f [arity:1]([%raw {js|x|js}] : unit) = ()
let f [arity:1]([%patExt1 ]|[%patExt2 ]) = ()
;;for [%ext ] = x to y do () done
;;for [%ext1 ]|[%ext2 ] = x to y do () done
;;for [%ext ] = x to y do () done
;;for [%ext ] as e = x to y do () done
;;for [%ext.pattern ] = x to y do () done
;;for [%ext.pattern ] as e = x to y do () done
;;for [%ext.pattern ] = x to y do () done
;;for [%ext.pattern ] as e = x to y do () done
;;for [%ext.pattern payload] = x to y do () done
;;for [%ext.pattern payload] as e = x to y do () done
;;for [%ext.pattern payload] = x to y do () done
;;for [%ext.pattern payload] as e = x to y do () done
;;for [%ext.pattern payload] as e|[%ext2 ] as bar = x to y do () done