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: bullet_ext.rb
    path of file: ./repos/bullet/spec/support
    
    the code of the file until where you have to start completion: # frozen_string_literal: true

module Bullet
  def self.collected_notifications_of_class(notification_class)
    Bullet.notification_collector.collection.select { |notification| notification.is_a? notification_class }
  end

  def self.collected_counter_cache_notifications
    collected_notifications_of_class Bullet::Notification::CounterCache
  end

  def self.collected_n_plus_one_query_notifications
    collected_notifications_of_class Bullet::Notification::NPlusOneQuery
  end

  def self.collected_unused_eager_association_notifications
    collected_notifications_of_class Bullet::Notification::UnusedEagerLoading
  end
end

module 
    
        def detecting_unpreloaded_association_for?(klass, association)
          Bullet.collected_n_plus_one_query_notifications.select do |notification|
            notification.base_class == klass.to_s && notification.associations.include?(association)
          end.present?
        end

        # returns true if the given class includes the specific unused preloaded association
        def unused_preload_associations_for?(klass, association)
          Bullet.collected_unused_eager_association_notifications.select do |notification|
            notification.base_class == klass.to_s && notification.associations.include?(association)
          end.present?
        end
      end
    end