sig
  type 'a t
  type mark = bool
  external make :
    'a -> AtomicMarkableReference.mark -> 'a AtomicMarkableReference.t
    = "ocamljava_atomicmarkablereference_make"
  external attempt_mark :
    'a AtomicMarkableReference.t ->
    'a -> AtomicMarkableReference.mark -> bool
    = "ocamljava_atomicmarkablereference_attempt_mark"
  external compare_and_set :
    'a AtomicMarkableReference.t ->
    'a ->
    'a ->
    AtomicMarkableReference.mark -> AtomicMarkableReference.mark -> bool
    = "ocamljava_atomicmarkablereference_compare_and_set"
  external get :
    'a AtomicMarkableReference.t -> 'a * AtomicMarkableReference.mark
    = "ocamljava_atomicmarkablereference_get"
  external get_reference : 'a AtomicMarkableReference.t -> 'a
    = "ocamljava_atomicmarkablereference_get_reference"
  external is_marked : 'a AtomicMarkableReference.t -> bool
    = "ocamljava_atomicmarkablereference_is_marked"
  external set :
    'a AtomicMarkableReference.t ->
    'a -> AtomicMarkableReference.mark -> unit
    = "ocamljava_atomicmarkablereference_set"
  external weak_compare_and_set :
    'a AtomicMarkableReference.t ->
    'a ->
    'a ->
    AtomicMarkableReference.mark -> AtomicMarkableReference.mark -> bool
    = "ocamljava_atomicmarkablereference_weak_compare_and_set"
end