You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: strategy.rb
    path of file: ./repos/rails-graphql/lib/rails/graphql/request
    
    the code of the file until where you have to start completion: # frozen_string_literal: true

module Rails
  module GraphQL
    class Request
      # = GraphQL Request Strategy
      #
      # This is the base class for the strategies of resolving a request.
      class Strategy
        extend ActiveSupport::Autoload

        autoload :DynamicInstance

        autoload :SequencedStrategy
        autoload :MultiQueryStrategy
        autoload :CachedStrategy

        # Configurations for the prepare step
        PREPARE_XARGS = { object?: true, reverse?: true }.freeze

        # The priority of the strate
    
        def trigger_event(event_name, **xargs)
          return unless listening_to?(event_name)

          # A simpler attempt to remove select less objects (or even none) by
          # assuming that the first item will work as exclusive and
          # non-exclusive, and the others, only non-exclusive or anything
          # different than a +Callback+
          event_name = event_name.to_sym
          list = listeners[event_name]
          objects = request.stack.select.with_index do |obj, idx|
            next unless list.include?(obj)
            next true if idx == 0

            obj.all_events.try(:[], event_name)&.any? do |ev|
              !(ev.is_a?(Callback) && ev.exclusive?)
            end
          end

          # Now trigger with more for all the selected objects
          Event.trigger(event_name, objects, self, **xargs) if objects.present?
        end