class RuboCop::AST::NodePattern::Compiler

def compile_any_order(capture_all = nil)

rubocop:disable Metrics/MethodLength
rubocop:disable Metrics/AbcSize
def compile_any_order(capture_all = nil)
  rest = capture_rest = nil
  patterns = []
  with_temp_variables do |child, matched|
    tokens_until('>', 'any child') do
      fail_due_to 'ellipsis must be at the end of <>' if rest
      token = tokens.shift
      case token
      when CAPTURED_REST then rest = capture_rest = next_capture
      when REST          then rest = true
      else patterns << compile_expr(token)
      end
    end
    [rest ? patterns.size..Float::INFINITY : patterns.size,
     ->(range) { ANY_ORDER_TEMPLATE.result(binding) }]
  end
end