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 = e.backtrace.reject {|frame| frame =~ /^#{Regexp.escape(__FILE__)}/}
backtrace -= caller
raise e unless backtrace.empty?
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