class Prism::Translation::Parser::Compiler

def find_forwarding(node)

we build this lookup table.
check if they were allowed by the current context. To determine that
When *, **, &, or ... are used as an argument in a method call, we
def find_forwarding(node)
  return [] if node.nil?
  forwarding = []
  forwarding << :* if node.rest.is_a?(RestParameterNode) && node.rest.name.nil?
  forwarding << :** if node.keyword_rest.is_a?(KeywordRestParameterNode) && node.keyword_rest.name.nil?
  forwarding << :& if !node.block.nil? && node.block.name.nil?
  forwarding |= [:&, :"..."] if node.keyword_rest.is_a?(ForwardingParameterNode)
  forwarding
end