class DEBUGGER__::ThreadClient

def show_outline expr

def show_outline expr
  begin
    obj = frame_eval(expr, re_raise: true)
  rescue Exception
    # ignore
  else
    o = Output.new(@output)
    locals = current_frame&.local_variables
    klass = M_CLASS.bind_call(obj)
    klass = obj if Class == klass || Module == klass
    o.dump("constants", obj.constants) if M_RESPOND_TO_P.bind_call(obj, :constants)
    outline_method(o, klass, obj)
    o.dump("instance variables", M_INSTANCE_VARIABLES.bind_call(obj))
    o.dump("class variables", klass.class_variables)
    o.dump("locals", locals.keys) if locals
  end
end