Giter Site home page Giter Site logo

robe hangs Emacs about robe HOT 16 OPEN

jkroes avatar jkroes commented on August 30, 2024
robe hangs Emacs

from robe.

Comments (16)

dgutov avatar dgutov commented on August 30, 2024

Hi!

When it freezes, can you find out the Ruby stack trace? I.e. where the external process spends the time.

See #121 (comment) for the recipe.

from robe.

jkroes avatar jkroes commented on August 30, 2024

So ps aux | grep ruby only yielded one line: for grep ruby. Since robe requires pry and robe-start seems to spawn *pry*, I tried grep-ing for pry instead of ruby. The rbspy stack trace for pry:

load [c function] - (unknown)
<top (required)> - /opt/homebrew/lib/ruby/gems/3.3.0/gems/bundler-2.5.4/exe/bundle:20
with_friendly_errors - /opt/homebrew/lib/ruby/gems/3.3.0/gems/bundler-2.5.4/lib/bundler/friendly_errors.rb:125
block in <top (required)> - /opt/homebrew/lib/ruby/gems/3.3.0/gems/bundler-2.5.4/exe/bundle:29
start - /opt/homebrew/lib/ruby/gems/3.3.0/gems/bundler-2.5.4/lib/bundler/cli.rb:31
start - /opt/homebrew/lib/ruby/gems/3.3.0/gems/bundler-2.5.4/lib/bundler/vendor/thor/lib/thor/base.rb:594
dispatch - /opt/homebrew/lib/ruby/gems/3.3.0/gems/bundler-2.5.4/lib/bundler/cli.rb:38
dispatch - /opt/homebrew/lib/ruby/gems/3.3.0/gems/bundler-2.5.4/lib/bundler/vendor/thor/lib/thor.rb:528
invoke_command - /opt/homebrew/lib/ruby/gems/3.3.0/gems/bundler-2.5.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:129
run - /opt/homebrew/lib/ruby/gems/3.3.0/gems/bundler-2.5.4/lib/bundler/vendor/thor/lib/thor/command.rb:38
exec - /opt/homebrew/lib/ruby/gems/3.3.0/gems/bundler-2.5.4/lib/bundler/cli.rb:452
run - /opt/homebrew/lib/ruby/gems/3.3.0/gems/bundler-2.5.4/lib/bundler/cli/exec.rb:30
kernel_load - /opt/homebrew/lib/ruby/gems/3.3.0/gems/bundler-2.5.4/lib/bundler/cli/exec.rb:65
load [c function] - (unknown)
<top (required)> - /opt/homebrew/lib/ruby/gems/3.3.0/bin/pry:28
load [c function] - (unknown)
<top (required)> - /opt/homebrew/lib/ruby/gems/3.3.0/gems/pry-0.14.2/bin/pry:13
start - /opt/homebrew/lib/ruby/gems/3.3.0/gems/pry-0.14.2/lib/pry/cli.rb:113
start - /opt/homebrew/lib/ruby/gems/3.3.0/gems/pry-0.14.2/lib/pry/pry_class.rb:198
start - /opt/homebrew/lib/ruby/gems/3.3.0/gems/pry-0.14.2/lib/pry/repl.rb:16
start - /opt/homebrew/lib/ruby/gems/3.3.0/gems/pry-0.14.2/lib/pry/repl.rb:41
with_ownership - /opt/homebrew/lib/ruby/gems/3.3.0/gems/pry-0.14.2/lib/pry/input_lock.rb:79
__with_ownership - /opt/homebrew/lib/ruby/gems/3.3.0/gems/pry-0.14.2/lib/pry/input_lock.rb:73
block in start - /opt/homebrew/lib/ruby/gems/3.3.0/gems/pry-0.14.2/lib/pry/repl.rb:38
repl - /opt/homebrew/lib/ruby/gems/3.3.0/gems/pry-0.14.2/lib/pry/repl.rb:80
loop - unknown:192
block in repl - /opt/homebrew/lib/ruby/gems/3.3.0/gems/pry-0.14.2/lib/pry/repl.rb:79
read - /opt/homebrew/lib/ruby/gems/3.3.0/gems/pry-0.14.2/lib/pry/repl.rb:122
read_line - /opt/homebrew/lib/ruby/gems/3.3.0/gems/pry-0.14.2/lib/pry/repl.rb:193
handle_read_errors - /opt/homebrew/lib/ruby/gems/3.3.0/gems/pry-0.14.2/lib/pry/repl.rb:164
block in read_line - /opt/homebrew/lib/ruby/gems/3.3.0/gems/pry-0.14.2/lib/pry/repl.rb:192
input_readline - /opt/homebrew/lib/ruby/gems/3.3.0/gems/pry-0.14.2/lib/pry/repl.rb:199
interruptible_region - /opt/homebrew/lib/ruby/gems/3.3.0/gems/pry-0.14.2/lib/pry/input_lock.rb:127
block in input_readline - /opt/homebrew/lib/ruby/gems/3.3.0/gems/pry-0.14.2/lib/pry/repl.rb:198
readline - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/forwardable.rb:242
readline - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/reline.rb:298
inner_readline - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/reline.rb:381
loop - unknown:192
block in inner_readline - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/reline.rb:364
read_io - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/reline.rb:429
loop - unknown:192
block in read_io - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/reline.rb:428
getc - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/reline/general_io.rb:53
loop - unknown:192
block in getc - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/reline/general_io.rb:51
wait_readable [c function] - (unknown)

from robe.

jkroes avatar jkroes commented on August 30, 2024

I also tried launching an irf-ruby *ruby* buffer before robe-start. When I typed { a:1 } the inf-ruby buffer began streaming text on the bottom line. I couldn't interrupt the stream long enough to copy some of the text, but here's the output from rbspy for the irb process:

<main> - /opt/homebrew/Cellar/ruby/3.3.0/bin/irb:28
load [c function] - (unknown)
<top (required)> - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.0/exe/irb:9
start - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/irb.rb:904
run - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/irb.rb:1009
catch [c function] - (unknown)
block in run - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/irb.rb:1003
eval_input - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/irb.rb:1042
each_top_level_statement - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/irb.rb:1103
loop - unknown:192
block in each_top_level_statement - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/irb.rb:1102
readmultiline - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/irb.rb:1090
loop - unknown:192
block in readmultiline - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/irb.rb:1089
read_input - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/irb.rb:1061
signal_status - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/irb.rb:1339
block in read_input - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/irb.rb:1060
gets - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/irb/input-method.rb:69
gets [c function] - (unknown)

from robe.

jkroes avatar jkroes commented on August 30, 2024

Finally, I've noticed a similar issue with Emacs hanging and a stream of text in *ruby* when evaluating show_doc, then typing anything in that buffer.

show_doc

Enter the method name you want to look up.
You can use tab to autocomplete.
Enter a blank line to exit.

>> >> >> proc {>> proc {>> proc { >> proc { >> proc { |>> proc { |>> proc { |e>> proc { |e>> proc { |ex>> proc { |ex>> proc { |exp>> proc { |exp>> proc { |expr>> proc { |expr>> proc { |expr,>> proc { |expr,>> proc { |expr, >> proc { |expr, >> proc { |expr, l>> proc { |expr, l>> proc { |expr, li>> proc { |expr, li>> proc { |expr, lin>> proc { |expr, lin>> proc { |expr, line>> proc { |expr, line>> proc { |expr, line|>> proc { |expr, line|>> proc { |expr, line| >> proc { |expr, line| >> proc { |expr, line|  >> proc { |expr, line|  >> proc { |expr, line|  r>> proc { |expr, line|  r>> proc { |expr, line|  re>> proc { |expr, line|  re>> proc { |expr, line|  req>> proc { |expr, line|  req>> proc { |expr, line|  requ>> proc { |expr, line|  requ>> proc { |expr, line|  requi>> proc { |expr, line|  requi>> proc { |expr, line|  requir>> proc { |expr, line|  requir>> proc { |expr, line|  require>> proc { |expr, line|  require>> proc { |expr, line|  require >> proc { |expr, line|  require >> proc { |expr, line|  require '>> proc { |expr, line|  require '>> proc { |expr, line|  require 'o>> proc { |expr, line|  require 'o>> proc { |expr, line|  require 'os>> proc { |expr, line|  require 'os>> proc { |expr, line|  require 'ost>> proc { |expr, line|  require 'ost>> proc { |expr, line|  require 'ostr>> proc { |expr, line|  require 'ostr>> proc { |expr, line|  require 'ostru>> proc { |expr, line|  require 'ostru>> proc { |expr, line|  require 'ostruc>> proc { |expr, line|  require 'ostruc>> proc { |expr, line|  require 'ostruct>> proc { |expr, line|  require 'ostruct>> proc { |expr, line|  require 'ostruct'>> proc { |expr, line|  require 'ostruct'>> proc { |expr, line|  require 'ostruct';>> proc { |expr, line|  require 'ostruct';>> proc { |expr, line|  require 'ostruct'; >> proc { |expr, line|  require 'ostruct'; >> proc { |expr, line|  require 'ostruct';  >> proc { |expr, line|  require 'ostruct';  >> proc { |expr, line|  require 'ostruct';  o>> proc { |expr, line|  require 'ostruct';  o>> proc { |expr, line|  require 'ostruct';  ol>> proc { |expr, line|  require 'ostruct';  ol>> proc { |expr, line|  require 'ostruct';  old>> proc { |expr, line|  require 'ostruct';  old>> proc { |expr, line|  require 'ostruct';  old_>> proc { |expr, line|  require 'ostruct';  old_>> proc { |expr, line|  require 'ostruct';  old_w>> proc { |expr, line|  require 'ostruct';  old_w>> proc { |expr, line|  require 'ostruct';  old_wp>> proc { |expr, line|  require 'ostruct';  old_wp>> proc { |expr, line|  require 'ostruct';  old_wp >> proc { |expr, line|  require 'ostruct';  old_wp >> proc { |expr, line|  require 'ostruct';  old_wp =>> proc { |expr, line|  require 'ostruct';  old_wp =>> proc { |expr, line|  require 'ostruct';  old_wp = >> proc { |expr, line|  require 'ostruct';  old_wp = >> proc { |expr, line|  require 'ostruct';  old_wp = d>> proc { |expr, line|  require 'ostruct';  old_wp = d>> proc { |expr, line|  require 'ostruct';  old_wp = de>> proc { |expr, line|  require 'ostruct';  old_wp = de>> proc { |expr, line|  require 'ostruct';  old_wp = def>> proc { |expr, line|  require 'ostruct';  old_wp = def>> proc { |expr, line|  require 'ostruct';  old_wp = defi>> proc { |expr, line|  require 'ostruct';  old_wp = defi>> proc { |expr, line|  require 'ostruct';  old_wp = defin>> proc { |expr, line|  require 'ostruct';  old_wp = defin>> proc { |expr, line|  require 'ostruct';  old_wp = define>> proc { |expr, line|  require 'ostruct';  old_wp = define>> proc { |expr, line|  require 'ostruct';  old_wp = defined>> proc { |expr, line|  require 'ostruct';  old_wp = defined>> proc { |expr, line|  require 'ostruct';  old_wp = defined?>> proc { |expr, line|  require 'ostruct';  old_wp = defined?>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(B>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(B>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bo>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bo>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bon>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bon>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond)>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond)>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) &>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) &>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) &&>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) &&>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && B>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && B>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bo>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bo>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bon>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bon>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.s>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.s>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.st>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.st>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.sta>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.sta>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.star>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.star>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.start>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.start>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.starte>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.starte>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started?>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started?>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? &>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? &>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? &&>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? &&>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && B>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && B>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bo>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bo>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bon>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bon>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.a>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.a>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.ag>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.ag>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.age>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.age>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agen>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agen>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.w>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.w>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.we>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.we>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.wea>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.wea>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weap>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weap>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapo>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapo>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon; >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon; >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  b>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  b>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  be>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  be>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  beg>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  beg>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begi>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begi>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin  >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin  >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin   >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin   >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    B>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    B>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bo>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bo>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bon>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bon>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.a>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.a>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.ag>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.ag>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.age>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.age>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agen>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agen>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.i>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.i>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.in>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.in>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.ins>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.ins>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.inst>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.inst>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.insta>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.insta>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instan>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instan>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instanc>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instanc>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_v>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_v>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_va>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_va>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_var>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_var>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_vari>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_vari>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_varia>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_varia>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variab>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variab>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variabl>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variabl>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_s>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_s>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_se>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_se>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set(>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set(>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@w>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@w>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@we>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@we>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@wea>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@wea>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weap>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weap>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapo>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapo>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon'>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon'>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon', >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon', >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',  >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',  >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',   >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',   >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',    >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',    >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',     >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',     >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      O>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      O>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      Op>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      Op>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      Ope>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      Ope>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      Open>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      Open>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenS>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenS>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenSt>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenSt>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStr>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStr>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStru>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStru>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruc>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruc>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.n>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.n>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.ne>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.ne>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:l>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:l>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:li>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:li>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:lin>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:lin>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_b>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_b>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_bu>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_bu>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buf>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buf>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buff>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buff>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffe>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffe>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer =>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer =>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer =>>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer =>>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => l>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => l>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => li>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => li>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => lin>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => lin>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line))>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line))>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) i>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) i>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if o>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if o>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if ol>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if ol>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_w>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_w>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp; >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp; >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;  >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;  >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;   >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;   >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    i>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    i>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if d>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if d>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if de>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if de>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if def>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if def>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defi>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defi>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defin>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defin>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if define>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if define>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_p>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_p>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pr>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pr>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.c>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.c>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.co>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.co>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.com>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.com>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.comp>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.comp>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.compl>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.compl>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.comple>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.comple>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complet>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complet>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete)>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete)>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) t>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) t>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) th>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) th>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) the>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) the>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then  >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then  >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then   >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then   >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then    >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then    >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then     >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then     >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      p>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      p>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      pu>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      pu>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      put>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      put>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts >> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _p>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _p>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pr>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pr>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_.>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_.>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_.c>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_.c>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_.co>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_.co>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_.com>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_.com>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_.comp>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_.comp>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_.compl>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_.compl>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_.comple>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_.comple>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_.complet>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_.complet>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_.complete>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_.complete>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_.complete(>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_.complete(>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_.complete(e>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_.complete(e>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_.complete(ex>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_.complete(ex>> proc { |expr, line|  require 'ostruct';  old_wp = defined?(Bond) && Bond.started? && Bond.agent.weapon;  begin    Bond.agent.instance_variable_set('@weapon',      OpenStruct.new(:line_buffer => line)) if old_wp;    if defined?(_pry_.complete) then      puts _pry_.complete(exp>> proc { |expr, line|  require 'ostruct';  old_wp = de=~  C-c C-c/opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/irb.rb:915:in `raise': abort then interrupt! (IRB::Abort)

The rbspy irb stacktrace:

<main> - /opt/homebrew/Cellar/ruby/3.3.0/bin/irb:28
load [c function] - (unknown)
<top (required)> - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.0/exe/irb:9
start - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/irb.rb:904
run - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/irb.rb:1009
catch [c function] - (unknown)
block in run - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/irb.rb:1003
eval_input - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/irb.rb:1042
each_top_level_statement - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/irb.rb:1103
loop - unknown:192
block in each_top_level_statement - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/irb.rb:1102
block in eval_input - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/irb.rb:1041
signal_status - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/irb.rb:1339
block (2 levels) in eval_input - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/irb.rb:1040
evaluate - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/irb/context.rb:570
evaluate - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/irb/workspace.rb:118
eval [c function] - (unknown)
<top (required)> - unknown:6
irb_show_doc - unknown:272
execute - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/irb/cmd/nop.rb:38
execute - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/irb/cmd/show_doc.rb:45
interactive - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/rdoc/ri/driver.rb:1108
loop - unknown:192
block in interactive - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/rdoc/ri/driver.rb:1104
readline - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/forwardable.rb:242
readline - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/reline.rb:298
inner_readline - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/reline.rb:381
loop - unknown:192
block in inner_readline - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/reline.rb:364
read_io - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/reline.rb:429
loop - unknown:192
block in read_io - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/reline.rb:428
block (2 levels) in inner_readline - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/reline.rb:357
each [c function] - (unknown)
block (3 levels) in inner_readline - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/reline.rb:352
rerender - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/reline/line_editor.rb:513
render_partial - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/reline/line_editor.rb:1180
each_with_index [c function] - (unknown)
each [c function] - (unknown)
block in render_partial - /opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/reline/line_editor.rb:1163
write [c function] - (unknown)

from robe.

dgutov avatar dgutov commented on August 30, 2024

Looks like some collision between Ruby 3.3 and Pry (all versions I've tried) when used inside Emacs.

Does its prompt look good to you? It seems to double over here, like

[24] pry(main)> [24] pry(main)> 

You can try removing Pry from the project config, just to verify that things work without it.

from robe.

dgutov avatar dgutov commented on August 30, 2024

And in the show_doc example, is >> your prompt?

from robe.

jkroes avatar jkroes commented on August 30, 2024

I'm having trouble copy-pasting, so I apologize. The main prompt is irb(main):001>. The prompt after show_doc is >> >>.

from robe.

jkroes avatar jkroes commented on August 30, 2024

I removed pry from the Gemfile, but now that causes an error if I run robe-start without first launching an inf-ruby buffer. Not sure what the expected behavior should be there.

from robe.

dgutov avatar dgutov commented on August 30, 2024

I'm having trouble copy-pasting, so I apologize. The main prompt is irb(main):001>. The prompt after show_doc is >> >>.

Ah, that sounds right.

I removed pry from the Gemfile, but now that causes an error if I run robe-start without first launching an inf-ruby buffer. Not sure what the expected behavior should be there.

Could you paste the error here?

from robe.

jkroes avatar jkroes commented on August 30, 2024

From *pry* buffer:

bundler: failed to load command: pry (/opt/homebrew/lib/ruby/gems/3.2.0/bin/pry)
/opt/homebrew/Cellar/[email protected]/3.2.2/lib/ruby/3.2.0/bundler/rubygems_integration.rb:308:in `block in replace_bin_path': can't find executable pry for gem pry. pry is not currently included in the bundle, perhaps you meant to add it to your Gemfile? (Gem::Exception)
	from /opt/homebrew/Cellar/[email protected]/3.2.2/lib/ruby/3.2.0/bundler/rubygems_integration.rb:336:in `block in replace_bin_path'
	from /opt/homebrew/lib/ruby/gems/3.2.0/bin/pry:25:in `<top (required)>'
	from /opt/homebrew/Cellar/[email protected]/3.2.2/lib/ruby/3.2.0/bundler/cli/exec.rb:58:in `load'
	from /opt/homebrew/Cellar/[email protected]/3.2.2/lib/ruby/3.2.0/bundler/cli/exec.rb:58:in `kernel_load'
	from /opt/homebrew/Cellar/[email protected]/3.2.2/lib/ruby/3.2.0/bundler/cli/exec.rb:23:in `run'
	from /opt/homebrew/Cellar/[email protected]/3.2.2/lib/ruby/3.2.0/bundler/cli.rb:492:in `exec'
	from /opt/homebrew/Cellar/[email protected]/3.2.2/lib/ruby/3.2.0/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
	from /opt/homebrew/Cellar/[email protected]/3.2.2/lib/ruby/3.2.0/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
	from /opt/homebrew/Cellar/[email protected]/3.2.2/lib/ruby/3.2.0/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
	from /opt/homebrew/Cellar/[email protected]/3.2.2/lib/ruby/3.2.0/bundler/cli.rb:34:in `dispatch'
	from /opt/homebrew/Cellar/[email protected]/3.2.2/lib/ruby/3.2.0/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
	from /opt/homebrew/Cellar/[email protected]/3.2.2/lib/ruby/3.2.0/bundler/cli.rb:28:in `start'
	from /opt/homebrew/Cellar/[email protected]/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.4.10/exe/bundle:45:in `block in <top (required)>'
	from /opt/homebrew/Cellar/[email protected]/3.2.2/lib/ruby/3.2.0/bundler/friendly_errors.rb:117:in `with_friendly_errors'
	from /opt/homebrew/Cellar/[email protected]/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.4.10/exe/bundle:33:in `<top (required)>'
	from /opt/homebrew/lib/ruby/gems/3.2.0/bin/bundle:25:in `load'
	from /opt/homebrew/lib/ruby/gems/3.2.0/bin/bundle:25:in `<main>'

Process pry exited abnormally with code 1

from robe.

dgutov avatar dgutov commented on August 30, 2024

It seems pry in unavailable (because you uninstalled it?).

But if I understand the situation right, it's still being called - perhaps by inf-ruby-console-default. Then it's still in Gemfile. You can remove it from there as well - actually, that's the only place it needed to be removed from, the gem could stay in the system.

Anyway, if you are not working on a project with a fixed structure, such as a Rails project, or some gem (library), you're not getting much benefit from the automatic repl launch, and might as well start with the manual M-x inf-ruby or M-x run-ruby (they're equivalent when invoked without additional arguments).

from robe.

jkroes avatar jkroes commented on August 30, 2024

Eventually I will be using Rails projects, but I just started learning Ruby. pry is still installed. Here's my Gemfile:

# frozen_string_literal: true

source "https://rubygems.org"

# gem "pry"
# gem "pry-doc"

Gemfile.lcok

GEM
  remote: https://rubygems.org/
  specs:
    coderay (1.1.3)
    method_source (1.0.0)
    pry (0.14.2)
      coderay (~> 1.1)
      method_source (~> 1.0)
    pry-doc (1.5.0)
      pry (~> 0.11)
      yard (~> 0.9.11)
    yard (0.9.34)

PLATFORMS
  arm64-darwin-23
  ruby

DEPENDENCIES
  pry
  pry-doc

BUNDLED WITH
   2.5.4

from robe.

dgutov avatar dgutov commented on August 30, 2024

Ok, I've pushed a change to inf-ruby which will make it behave differently when gem "pry" is commented out.

Meaning, it won't try to launch pry in this case.

from robe.

dgutov avatar dgutov commented on August 30, 2024

Regarding the use of Pry, it looks like you'll need to add readline-ext to Gemfile as well. Or downgrade to Ruby 3.2 or earlier. Or skip using Pry altogether, since the latest Irb have gained most of its main features anyway.

This seems to be the closest upstream bug report: ruby/reline#616

from robe.

jkroes avatar jkroes commented on August 30, 2024

Ok, here's what seems to be working now. I downgraded to Ruby 3.2. I deleted the Gemfile.lock. Now I'm having success with both a blank Gemfile and one listing pry and pry-doc.

  1. Deleting the Gemfile.lock seemed necessary, but the README only mentions Gemfile. Should the former cause issues?
  2. The README lists pry and pry-doc as required dependencies, but based on this thread, that doesn't seem to be strictly true.

from robe.

dgutov avatar dgutov commented on August 30, 2024

Both Ruby 3.3 + Irb and Ruby 3.2 + Pry should remain supported configurations. Meaning, if you downgraded to Ruby 3.2, you should be able to keep Pry, if you prefer. That is for inf-ruby to work, that is.

Deleting the Gemfile.lock seemed necessary, but the README only mentions Gemfile. Should the former cause issues?

As a Ruby developer, you normally keep Gemfile.lock around and even check it into Git. To update its contents, you change Gemfile and run bundle install (or, in some cases, bundle update gem1, gem2, ...). So Gemfile.lock should be there.

The README lists pry and pry-doc as required dependencies, but based on this thread, that doesn't seem to be strictly true.

Sorry, I kinda forgot what repository we're in. For Robe, Pry remains a requirement, so when one wants to use it with Ruby 3.3, adding readline-ext to Gemfile remains the recommended solution. I should look into that more later, given the circumstances.

from robe.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.