# File lib/facet/module/redefine_method.rb, line 15 def redefine_method( sym, aliased=true, &blk ) raise ArgumentError, "method does not exist" unless method_defined?( sym ) if aliased old = instance_method(sym) undef_method(sym) define_method(sym){ |*args| r = blk.call(*args) return r unless r.nil? return old.bind(self).call(*args) } else undef_method(sym) define_method(sym) { |*args| return blk.call(*args) } end end