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: propagate_generic_classifications.rb
    path of file: ./repos/mushroom-observer/app/models/name
    
    the code of the file until where you have to start completion: # frozen_string_literal: true

module Name::PropagateGenericClassifications
  def can_propagate?
    rank == "Genus" &&
      # Name s.l. might have a broader classifications than name s.l.
      # So prevent propagation in order to protect subtaxa classification
      author.exclude?("sensu lato")
  end

  # When we `include` a module, the way to add class methods is like this:
  def self.included(base)
    base.extend(ClassMethods)
  end

  module ClassMethods
    # This is used only by script/refresh_caches.  I have placed it here in
    # order to make it easily accessible to unit testing.  As a separate file,
    # it should never be loaded by the web server, so it's safe from causing
    # even more unnecessary bloat.  I think. -JPH 20210814
    def propagate_generic_
    
    def execute_propagation_fixes(fixes, dry_run)
      bundles = {}
      used_names = hash_of_names_with_observations
      fixes.each_with_object([]) do |fix, msgs|
        name, old_class, new_class = fix
        bundles[new_class] = [] if bundles[new_class].blank?
        bundles[new_class] << name.id
        next unless used_names[name.text_name]

        msgs << describe_propagation_fix(name, old_class, new_class)
      end + execute_bundled_propagation_fixes(bundles, dry_run)
    end

    def execute_bundled_propagation_fixes(bundles, dry_run)
      bundles.each_with_object([]) do |bundle, msgs|
        classification, ids = bundle
        msgs << "Setting classifications for #{ids.join(",")}"
        Name.where(id: ids).update_all(classification: classification) \
          unless dry_run
      end
    end

    def describe_propagation_fix(name, old_class, new_class)
      if new_class.blank?
        "Stripping classification from #{name.text_name}"
      elsif old_class.blank?
        "Filling in classification for #{name.text_name}"
      else
        "Fixing classification of #{name.text_name}: " \
          "#{changes_in_classification_string(old_class, new_class)}"
      end
    end