# 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