class Byebug::BreakCommand

def execute

def execute
  return puts(self.class.help) if self.class.names.include?(@match[0])
  if @match[1]
    line, _, _, expr = @match.captures
  else
    _, file, line, expr = @match.captures
  end
  if expr && file.nil? && line.nil?
    return errmsg("Invalid breakpoint location: #{expr}")
  elsif expr && expr !~ /^\s*if\s+(.+)/
    return errmsg("Expecting \"if\" in breakpoint condition, got: #{expr}")
  else
    expr = $1
  end
  if file.nil? && !@state.context
    return errmsg('We are not in a state that has an associated file')
  end
  file = @state.file if file.nil?
  line = @state.line.to_s if line.nil?
  if line =~ /^\d+$/
    path = CommandProcessor.canonic_file(file)
    return errmsg("No file named #{path}") unless File.exist?(file)
    l, n = line.to_i, File.foreach(file).count
    return errmsg("There are only #{n} lines in file #{path}") if l > n
    autoreload = Setting[:autoreload]
    possible_lines = LineCache.trace_line_numbers(file, autoreload)
    unless possible_lines.member?(l)
      return errmsg("Line #{l} is not a valid breakpoint in file #{path}")
    end
    b = Breakpoint.add(file, l, expr)
    puts "Created breakpoint #{b.id} at #{path}:#{l}"
    unless syntax_valid?(expr)
      errmsg("Incorrect expression \"#{expr}\"; breakpoint disabled.")
      b.enabled = false
    end
  else
    kl = bb_warning_eval(file)
    return errmsg("Unknown class #{file}") unless kl && kl.is_a?(Module)
    class_name, method = kl.name, line.intern
    b = Breakpoint.add(class_name, method, expr)
    puts "Created breakpoint #{b.id} at #{class_name}::#{method}"
  end
end