`type ('a, -'permission) t`````
`type 'a repr````=` `{`

`mutable has_any_waiters : bool;`
`mutable ivar : 'a Ivar.t;`

`}```

`repr` exists so that we may hide the implementation of a `Bvar.t`, and then add a phantom type to it upstream. Without this, the phantom type variable would allow for anything to be coerced in and out, since it is unused.

`val of_repr : 'a repr ‑> ('a, 'permission) t`
`val to_repr : ('a, 'permission) t ‑> 'a repr`