module RuboCop::Cop::Betterment::Utils::MethodReturnTable

def get_method(method_name)

def get_method(method_name)
  indexed_methods[method_name]
end

def get_methods_for_class(node)

def get_methods_for_class(node)
  return [] unless node.children && node.class_type?
  node.descendants.select(&:def_type?)
end

def has_method?(method_name)

def has_method?(method_name)
  indexed_methods.include?(method_name)
end

def indexed_methods

def indexed_methods
  @indexed_methods ||= {}
end

def populate_index(node)

def populate_index(node)
  raise "not a class" unless node.class_type?
  get_methods_for_class(node).each do |method|
    track_method(method.method_name, Utils::Parser.get_return_values(method))
  end
  node.descendants.each do |descendant|
    lhs, rhs = *descendant
    next unless descendant.equals_asgn? && (descendant.type != :casgn) && rhs&.send_type?
    track_method(lhs, [rhs])
  end
end

def track_method(method_name, returns)

def track_method(method_name, returns)
  indexed_methods[method_name] = returns
end