class Prism::Pattern

def compile_array_pattern_node(node)

in [foo, bar, baz]
def compile_array_pattern_node(node)
  compile_error(node) if !node.rest.nil? || node.posts.any?
  constant = node.constant
  compiled_constant = compile_node(constant) if constant
  preprocessed = node.requireds.map { |required| compile_node(required) }
  compiled_requireds = ->(other) do
    deconstructed = other.deconstruct
    deconstructed.length == preprocessed.length &&
      preprocessed
        .zip(deconstructed)
        .all? { |(matcher, value)| matcher.call(value) }
  end
  if compiled_constant
    combine_and(compiled_constant, compiled_requireds)
  else
    compiled_requireds
  end
end