(command.CommandList
  children: [
    (command.ShFunction
      name: check
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Pipeline
                          children: [
                            (C {<grep>} {<-q>} {(DQ ($ Id.VSub_Number '$2'))} 
                              {(DQ ($ Id.VSub_Number '$1'))}
                            )
                          ]
                          negated: T
                        )
                      ]
                    )
                  action: [
                    (C {<echo>} {(DQ <'Did not find expected output:'>)})
                    (C {<echo>} {(DQ <'   '> ($ Id.VSub_Number '$2'))})
                    (C {<echo>} {(DQ )})
                    (C {<echo>} {(DQ <'Actual error output below:'>)})
                    (C {<cat>} {(DQ ($ Id.VSub_Number '$1'))})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [65 82]
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:STDOUT)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_Number '$1'))}
          spids: [130]
        )
      ]
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} {(DQ <'^Version [4-7]'>)})
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {
        (DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> 
          <'] (anonymous namespace):'>
        )
      }
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {
        (DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> 
          <'] (anonymous namespace)::c1_count:'>
        )
      }
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {
        (DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> 
          <'] (anonymous namespace)::c2_count:'>
        )
      }
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {(DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> <'] bool:'>)}
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {
        (DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> 
          <'] check<one::c1>:'>
        )
      }
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {
        (DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> 
          <'] check<two::c2<double> >:'>
        )
      }
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {
        (DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> 
          <'] check<two::c2<int> >:'>
        )
      }
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {(DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> <'] double:'>)}
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {(DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> <'] F_A:'>)}
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {(DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> <'] F_B:'>)}
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {(DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> <'] F_C:'>)}
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {(DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> <'] int:'>)}
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {(DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> <'] main:'>)}
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {(DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> <'] one:'>)}
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {(DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> <'] one::c1:'>)}
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {
        (DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> <'] one::c1::~c1:'>)
      }
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {
        (DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> <'] one::c1::c1:'>)
      }
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {
        (DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> <'] one::c1::val:'>)
      }
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {(DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> <'] one::c1v:'>)}
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {(DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> <'] one::G_A:'>)}
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {(DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> <'] one::G_B:'>)}
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {(DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> <'] one::G_B:'>)}
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {(DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> <'] two:'>)}
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {
        (DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> 
          <'] two::c2<double>::~c2:'>
        )
      }
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {
        (DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> 
          <'] two::c2<double>::c2:'>
        )
      }
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {
        (DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> 
          <'] two::c2<double>::val:'>
        )
      }
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {
        (DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> 
          <'] two::c2<double>:'>
        )
      }
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {
        (DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> 
          <'] two::c2<int const'> <Id.Lit_BadBackslash '\\'> <'*>:'>
        )
      }
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {
        (DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> 
          <'] two::c2<int const'> <Id.Lit_BadBackslash '\\'> <'*>::~c2:'>
        )
      }
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {
        (DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> 
          <'] two::c2<int const'> <Id.Lit_BadBackslash '\\'> <'*>::c2:'>
        )
      }
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {
        (DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> 
          <'] two::c2<int const'> <Id.Lit_BadBackslash '\\'> <'*>::val:'>
        )
      }
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {
        (DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> 
          <'] two::c2<int>::~c2:'>
        )
      }
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {
        (DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> 
          <'] two::c2<int>::c2:'>
        )
      }
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {
        (DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> 
          <'] two::c2<int>::val:'>
        )
      }
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {
        (DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> <'] two::c2<int>:'>)
      }
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {
        (DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> <'] two::c2v1:'>)
      }
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {
        (DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> <'] two::c2v2:'>)
      }
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {
        (DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> 
          <'] anonymous_union_var:'>
        )
      }
    )
    (C {<check>} {($ Id.VSub_DollarName '$STDOUT')} 
      {
        (DQ <'^'> <Id.Lit_BadBackslash '\\'> <'[ *[0-9]*'> <Id.Lit_BadBackslash '\\'> 
          <'] inline_func_1:'>
        )
      }
    )
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
  ]
)