# File lib/thor/task.rb, line 23
    def run(obj, *params)
      raise NoMethodError, "the `#{meth}' task of #{obj.class} is private" if
        (obj.private_methods + obj.protected_methods).include?(meth)
      
      obj.send(meth, *params)
    rescue ArgumentError => e
      # backtrace sans anything in this file
      backtrace = e.backtrace.reject {|frame| frame =~ /^#{Regexp.escape(__FILE__)}/}
      # and sans anything that got us here
      backtrace -= caller
      raise e unless backtrace.empty?
    
      # okay, they really did call it wrong
      raise Error, "`#{meth}' was called incorrectly. Call as `#{formatted_usage}'"
    rescue NoMethodError => e
      begin
        raise e unless e.message =~ /^undefined method `#{meth}' for #{Regexp.escape(obj.inspect)}$/
      rescue
        raise e
      end
      raise Error, "The #{namespace false} namespace doesn't have a `#{meth}' task"
    end