SpinLock = object
proc `=copy`(dest: var SpinLock; source: SpinLock) {.error.}
proc `=sink`(dest: var SpinLock; source: SpinLock) {.error.}
proc acquire(s: var SpinLock) {....raises: [], tags: [], forbids: [].}
proc release(s: var SpinLock) {....raises: [], tags: [], forbids: [].}
proc tryAcquire(s: var SpinLock): bool {....raises: [], tags: [], forbids: [].}
template withLock(a: SpinLock; body: untyped)