class Bullet::Detector::UnusedEagerAssociation

def call_associations(bullet_ar_key, associations)

def call_associations(bullet_ar_key, associations)
  all = Set.new
  eager_loadings.similarly_associated(bullet_ar_key, associations).each do |related_bullet_ar_key|
    coa = call_object_associations[related_bullet_ar_key]
    next if coa.nil?
    all.merge coa
  end
  all.to_a
end

def check_unused_preload_associations

if association not in call_object_association, then the object => association - call_object_association is ununsed preload assocations
get call_object_association from associations of call_object_associations whose object is in related_objects
get related_objects from eager_loadings associated with object and associations
check if there are unused preload associations.
def check_unused_preload_associations
  @@checked = true
  object_associations.each do |bullet_ar_key, associations|
    object_association_diff = diff_object_associations bullet_ar_key, associations
    next if object_association_diff.empty?
    create_notification bullet_ar_key.bullet_class_name, object_association_diff
  end
end

def create_notification(klazz, associations)

def create_notification(klazz, associations)
  notice = Bullet::Notification::UnusedEagerLoading.new(klazz, associations)
  Bullet.notification_collector.add(notice)
end

def diff_object_associations(bullet_ar_key, associations)

def diff_object_associations(bullet_ar_key, associations)
  potential_associations = associations - call_associations(bullet_ar_key, associations)
  potential_associations.reject { |a| a.is_a?(Hash) }
end