class Concurrent::TVar

def initialize(value)

def initialize(value)
  @value = value
  @version = 0
  @lock = Mutex.new
end

def unsafe_increment_version

def unsafe_increment_version
  @version += 1
end

def unsafe_lock

def unsafe_lock
  @lock
end

def unsafe_value

def unsafe_value
  @value
end

def unsafe_value=(value)

def unsafe_value=(value)
  @value = value
end

def unsafe_version

def unsafe_version
  @version
end

def value

def value
  Concurrent::atomically do
    Transaction::current.read(self)
  end
end

def value=(value)

def value=(value)
  Concurrent::atomically do
    Transaction::current.write(self, value)
  end
end