Barrier = object
proc `=copy`(dest: var Barrier; source: Barrier) {.error.}
proc `=destroy`(b: var Barrier) {....raises: [], tags: [], forbids: [].}
proc `=sink`(dest: var Barrier; source: Barrier) {.error.}
proc init(b: out Barrier; parties: Natural) {....raises: [], tags: [], forbids: [].}
proc wait(b: var Barrier) {....raises: [], tags: [], forbids: [].}