class DEBUGGER__::MethodBreakpoint

def try_enable added: false

def try_enable added: false
  eval_class_name
  search_method
  begin
    retried = false
    @tp.enable(target: @method)
    DEBUGGER__.info "#{self} is activated." if added
    if @sig_op == '#'
      @cond_class = @klass if @method.owner != @klass
    else # '.'
      begin
        @cond_class = @klass.singleton_class if @method.owner != @klass.singleton_class
      rescue TypeError
      end
    end
  rescue ArgumentError
    raise if retried
    retried = true
    # maybe C method
    case @sig_op
    when '.'
      begin
        override @klass.singleton_class
      rescue TypeError
        override @klass.class
      end
    when '#'
      override @klass
    end
    # re-collect the method object after the above patch
    search_method
    @override_method = true if @method
    retry
  end
rescue Exception
  raise unless added
end