class Concurrent::Synchronization::MutexLockableObject

@!macro internal_implementation_note
@!visibility private

def initialize

def initialize
  super()
  @__Lock__      = ::Mutex.new
  @__Condition__ = ::ConditionVariable.new
end

def initialize_copy(other)

def initialize_copy(other)
  super
  @__Lock__      = ::Mutex.new
  @__Condition__ = ::ConditionVariable.new
end

def ns_wait(timeout = nil)

def ns_wait(timeout = nil)
  @__Condition__.wait @__Lock__, timeout
  self
end

def synchronize

def synchronize
  if @__Lock__.owned?
    yield
  else
    @__Lock__.synchronize { yield }
  end
end