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