class Solargraph::Parser::ParserGem::NodeProcessors::SendNode

def process

def process
  if node.children[0].nil?
    if [:private, :public, :protected].include?(node.children[1])
      process_visibility
    elsif node.children[1] == :module_function
      process_module_function
    elsif [:attr_reader, :attr_writer, :attr_accessor].include?(node.children[1])
      process_attribute
    elsif node.children[1] == :include
      process_include
    elsif node.children[1] == :extend
      process_extend
    elsif node.children[1] == :prepend
      process_prepend
    elsif node.children[1] == :require
      process_require
    elsif node.children[1] == :autoload
      process_autoload
    elsif node.children[1] == :private_constant
      process_private_constant
    elsif node.children[1] == :alias_method && node.children[2] && node.children[2] && node.children[2].type == :sym && node.children[3] && node.children[3].type == :sym
      process_alias_method
    elsif node.children[1] == :private_class_method && node.children[2].is_a?(AST::Node)
      # Processing a private class can potentially handle children on its own

      return if process_private_class_method
    end
  elsif node.children[1] == :require && node.children[0].to_s == '(const nil :Bundler)'
    pins.push Pin::Reference::Require.new(Solargraph::Location.new(region.filename, Solargraph::Range.from_to(0, 0, 0, 0)), 'bundler/require')
  end
  process_children
end