class Spoom::Deadcode::Plugins::ActiveRecord

def on_send(send)

: (Send send) -> void
@override
def on_send(send)
  if send.recv.nil? && CALLBACKS.include?(send.name)
    # Process direct symbol arguments
    send.each_arg(Prism::SymbolNode) do |arg|
      @index.reference_method(arg.unescaped, send.location)
    end
    # Process hash arguments for conditions like if: :method_name
    send.each_arg_assoc do |key, value|
      key = key.slice.delete_suffix(":")
      case key
      when *CALLBACK_CONDITIONS
        if value&.is_a?(Prism::SymbolNode)
          @index.reference_method(value.unescaped, send.location)
        end
      end
    end
    return
  end
  return unless send.recv
  case send.name
  when *CRUD_METHODS
    send.each_arg_assoc do |key, _value|
      key = key.slice.delete_suffix(":")
      @index.reference_method("#{key}=", send.location)
    end
  when *ARRAY_METHODS
    send.each_arg(Prism::ArrayNode) do |arg|
      arg.elements.each do |part|
        next unless part.is_a?(Prism::HashNode)
        part.elements.each do |assoc|
          next unless assoc.is_a?(Prism::AssocNode)
          key = assoc.key.slice.delete_suffix(":")
          @index.reference_method("#{key}=", send.location)
        end
      end
    end
  end
end