    # File lib/action_controller/assertions/selector_assertions.rb, line 367
          def assert_select_rjs(*args, &block)
            rjs_type = nil
            arg      = args.shift

            # If the first argument is a symbol, it's the type of RJS statement we're looking
            # for (update, replace, insertion, etc). Otherwise, we're looking for just about
            # any RJS statement.
            if arg.is_a?(Symbol)
              rjs_type = arg
              if rjs_type == :insert
                arg = args.shift
                insertion = "insert_#{arg}".to_sym
                raise ArgumentError, "Unknown RJS insertion type #{arg}" unless RJS_STATEMENTS[insertion]
                statement = "(#{RJS_STATEMENTS[insertion]})"
              else
                raise ArgumentError, "Unknown RJS statement type #{rjs_type}" unless RJS_STATEMENTS[rjs_type]
                statement = "(#{RJS_STATEMENTS[rjs_type]})"
              end
              arg = args.shift
            else
              statement = "#{RJS_STATEMENTS[:any]}"
            end

            # Next argument we're looking for is the element identifier. If missing, we pick
            # any element.
            if arg.is_a?(String)
              id = Regexp.quote(arg)
              arg = args.shift
            else
              id = "[^\"]*"
            end

            pattern =
              case rjs_type
                when :chained_replace, :chained_replace_html
                  Regexp.new("\\$\\(\"#{id}\"\\)#{statement}\\(#{RJS_PATTERN_HTML}\\)", Regexp::MULTILINE)
                else
                  Regexp.new("#{statement}\\(\"#{id}\", #{RJS_PATTERN_HTML}\\)", Regexp::MULTILINE)
              end

            # Duplicate the body since the next step involves destroying it.
            matches = nil
            @response.body.gsub(pattern) do |match|
              html = unescape_rjs($2)
              matches ||= []
              matches.concat HTML::Document.new(html).root.children.select { |n| n.tag? }
              ""
            end
            if matches
              if block_given?
                begin
                  in_scope, @selected = @selected, matches
                  yield matches
                ensure
                  @selected = in_scope
                end
              end
              matches
            else
              # RJS statement not found.
              flunk args.shift || "No RJS statement that replaces or inserts HTML content."
            end
          end