# File lib/deprecated.rb, line 158
    def deprecated(sym, replacement=nil, scope=nil)
      unless sym.kind_of?(Symbol)
        raise ArgumentError, "deprecated() requires symbols for its first argument." 
      end

      meth = instance_method(sym)
      unless scope
        pub = public_instance_methods
        pro = protected_instance_methods
        pri = private_instance_methods
        if pub.include?(sym) or pub.include?(sym.to_s)
          scope = :public
        elsif pro.include?(sym) or pro.include?(sym.to_s)
          scope = :protected
        elsif pri.include?(sym) or pri.include?(sym.to_s)
          scope = :private
        end
      end

      define_method(sym) do |*args|
        dep_meth = method(sym).unbind
        __deprecated_run_action__(sym, replacement)
        retval = meth.bind(self).call(*args) 
        dep_meth.bind(self)
        return retval
      end

      method(scope).call(sym) if scope
      return scope
    end