    # File lib/facets/core/proc/bind.rb, line 14
      def bind(object=nil)
        object ||= eval("self", self)
        block = self
        store = Object
        begin
          old, Thread.critical = Thread.critical, true
          #n=0; n+=1 while store.method_defined?(name="_bind_#{n}")
          name="_bind_#{block}"
          store.module_eval do
            define_method name, &block
          end
          return object.method(name)
        ensure
          store.module_eval do
            remove_method name #rescue nil
            #undef_method name #rescue nil
          end
          Thread.critical = old
        end
      end