class RuboCop::Cop::Style::StringConcatenation

def on_send(node)

def on_send(node)
  return unless string_concatenation?(node)
  topmost_plus_node = find_topmost_plus_node(node)
  parts = []
  collect_parts(topmost_plus_node, parts)
  add_offense(topmost_plus_node) do |corrector|
    correctable_parts = parts.none? { |part| uncorrectable?(part) }
    if correctable_parts && !corrected_ancestor?(topmost_plus_node)
      corrector.replace(topmost_plus_node, replacement(parts))
      @corrected_nodes ||= Set.new.compare_by_identity
      @corrected_nodes.add(topmost_plus_node)
    end
  end
end