class DEBUGGER__::ThreadClient

def set_mode mode

def set_mode mode
  debug_mode(@mode, mode)
  # STDERR.puts "#{@mode} => #{mode} @ #{caller.inspect}"
  # pp caller
  # mode transition check
  case mode
  when :running
    raise "#{mode} is given, but #{mode}" unless self.waiting?
  when :waiting
    # TODO: there is waiting -> waiting
    # raise "#{mode} is given, but #{mode}" unless self.running?
  else
    raise "unknown mode: #{mode}"
  end
  # DEBUGGER__.warn "#{@mode} => #{mode} @ #{self.inspect}"
  @mode = mode
end