class ActiveRecord::Associations::Preloader::ThroughAssociation

def future_classes

def future_classes
  if run?
    []
  elsif through_preloaders.all?(&:run?)
    source_preloaders.flat_map(&:future_classes).uniq
  else
    through_classes = through_preloaders.flat_map(&:future_classes)
    source_classes = source_reflection.
      chain.
      reject { |reflection| reflection.respond_to?(:polymorphic?) && reflection.polymorphic? }.
      map(&:klass)
    (through_classes + source_classes).uniq
  end
end