(command.CommandList
  children: [
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:TMP spids:[40])
          op: Equal
          rhs: 
            {
              (word_part.BracedVarSub
                token: <VSub_Name TMP>
                suffix_op: 
                  (suffix_op.StringUnary
                    op_id: VTest_ColonHyphen
                    arg_word: {(Lit_Slash /) (tmp)}
                  )
                spids: [41 46]
              )
            }
          spids: [40]
        )
      ]
      spids: [40]
    )
    (command.Assignment
      keyword: Assign_Readonly
      pairs: [(assign_pair lhs:(lhs_expr.LhsName name:TMP spids:[53]) op:Equal spids:[53])]
      spids: [51]
    )
    (command.FuncDef
      name: log
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(echo)} {(DQ ($ VSub_Number '$0') (': ') ($ VSub_At '$@'))}]
              redirects: [(redir.Redir op:<Redir_GreatAnd '1>&'> fd:1 arg_word:{(2)})]
            )
          ]
          spids: [63]
        )
      spids: [59 62]
    )
    (command.FuncDef
      name: die
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(echo)} {(DQ ($ VSub_Number '$0') (' ERROR: ') ($ VSub_At '$@'))}]
              redirects: [(redir.Redir op:<Redir_GreatAnd '1>&'> fd:1 arg_word:{(2)})]
            )
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [84]
        )
      spids: [80 83]
    )
    (command.FuncDef
      name: show_help
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(cat)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 127
                  stdin_parts: [
                    ('Usage: ./configure [OPTION]\n')
                    ('\n')
                    ('Detects system settings before a build of Oil.\n')
                    ('\n')
                    ('  --prefix            Prefix for the bin/ directory [/usr/local]\n')
                    ('  --with-readline     Fail unless readline is available.\n')
                    (
"  --without-readline  Don't compile with readline, even if it's available.\n"
                    )
                    ("\t\t      The shell won't have any interactive features.\n")
                  ]
                )
              ]
            )
          ]
          spids: [110]
        )
      spids: [106 109]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:FLAG_prefix spids:[140])
          op: Equal
          rhs: {(SQ </usr/local>)}
          spids: [140]
        )
      ]
      spids: [140]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:FLAG_with_readline spids:[145])
          op: Equal
          rhs: {(SQ )}
          spids: [145]
        )
      ]
      spids: [145]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:FLAG_without_readline spids:[152])
          op: Equal
          rhs: {(SQ )}
          spids: [152]
        )
      ]
      spids: [152]
    )
    (command.WhileUntil
      keyword: <KW_While while>
      cond: [(command.Sentence child:(C {(true)}) terminator:<Op_Semi ';'>)]
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {(DQ ($ VSub_Number '$1'))}
              arms: [
                (case_arm
                  pat_list: [{(SQ )}]
                  action: [(command.ControlFlow token:<ControlFlow_Break break>)]
                  spids: [177 179 185 16777215]
                )
                (case_arm
                  pat_list: [{(--help)}]
                  action: [
                    (C {(show_help)})
                    (command.ControlFlow
                      token: <ControlFlow_Exit exit>
                      arg_word: {(0)}
                    )
                  ]
                  spids: [188 189 204 16777215]
                )
                (case_arm
                  pat_list: [{(--with-readline)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:FLAG_with_readline spids:[212])
                          op: Equal
                          rhs: {(1)}
                          spids: [212]
                        )
                      ]
                      spids: [212]
                    )
                  ]
                  spids: [208 209 216 16777215]
                )
                (case_arm
                  pat_list: [{(--without-readline)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:FLAG_without_readline spids:[224])
                          op: Equal
                          rhs: {(1)}
                          spids: [224]
                        )
                      ]
                      spids: [224]
                    )
                  ]
                  spids: [220 221 228 16777215]
                )
                (case_arm
                  pat_list: [{(--prefix) (Lit_Other '=') (Lit_Other '*')}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:FLAG_prefix spids:[246])
                          op: Equal
                          rhs: 
                            {
                              (word_part.CommandSubPart
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(expr)} {(DQ ($ VSub_Number '$1'))} {(Lit_Other ':')} 
                                        {(SQ <'--prefix=\\(.*\\)'>)}
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [247 259]
                              )
                            }
                          spids: [246]
                        )
                      ]
                      spids: [246]
                    )
                  ]
                  spids: [240 243 262 16777215]
                )
                (case_arm
                  pat_list: [{(--prefix)}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: (C {(test)} {($ VSub_Pound '$#')} {(-eq)} {(1)})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(C {(die)} {(DQ ('--prefix requires an argument'))})]
                          spids: [16777215 280]
                        )
                      ]
                      spids: [16777215 290]
                    )
                    (C {(shift)})
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:FLAG_prefix spids:[296])
                          op: Equal
                          rhs: {($ VSub_Number '$1')}
                          spids: [296]
                        )
                      ]
                      spids: [296]
                    )
                  ]
                  spids: [265 266 300 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [(C {(die)} {(DQ ("Invalid argument '") ($ VSub_Number '$1') ("'"))})]
                  spids: [303 304 316 16777215]
                )
              ]
              spids: [168 174 319]
            )
            (C {(shift)})
          ]
          spids: [165 324]
        )
    )
    (command.FuncDef
      name: cc_quiet
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(cc)} {(DQ ($ VSub_At '$@'))} {(-o)} {(/dev/null)}]
              redirects: [
                (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})
                (redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})
              ]
            )
          ]
          spids: [337]
        )
      spids: [333 336]
    )
    (command.FuncDef
      name: cc_or_die
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          children: [
                            (command.SimpleCommand
                              words: [{(cc)} {(DQ ($ VSub_At '$@'))}]
                              redirects: [
                                (redir.Redir
                                  op: <Redir_Great '>'>
                                  fd: 16777215
                                  arg_word: {($ VSub_DollarName '$TMP') (/cc.log)}
                                )
                                (redir.Redir
                                  op: <Redir_GreatAnd '2>&'>
                                  fd: 2
                                  arg_word: {(1)}
                                )
                              ]
                            )
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(log)} {(DQ ("Error running 'cc ") ($ VSub_At '$@') ("':"))})
                    (C {(cat)} {($ VSub_DollarName '$TMP') (/cc.log)})
                    (C {(die)} {(DQ ('Fatal compile error running feature test'))})
                  ]
                  spids: [16777215 384]
                )
              ]
              spids: [16777215 409]
            )
          ]
          spids: [363]
        )
      spids: [359 362]
    )
    (command.FuncDef
      name: cc_statement
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:pp_var spids:[426])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [426]
                )
              ]
              spids: [424]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:prog spids:[434])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                  spids: [434]
                )
              ]
              spids: [432]
            )
            (command.SimpleCommand
              words: [{(cat)}]
              redirects: [
                (redir.Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$TMP') (/cc_statement.c)}
                )
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 456
                  stdin_parts: [('int main() {\n') ('  ') ($ VSub_DollarName '$prog') ('\n') ('}\n')]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(cc_quiet)} {($ VSub_DollarName '$TMP') (/cc_statement.c)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('#define ') ($ VSub_DollarName '$pp_var') (' 1'))})
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                  spids: [16777215 470]
                )
              ]
              else_action: [(command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
              spids: [487 495]
            )
          ]
          spids: [421]
        )
      spids: [417 420]
    )
    (command.FuncDef
      name: detect_readline
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(cc_quiet)} {(build/detect-readline.c)} {(-l)} {(readline)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(echo)} {(SQ <'HAVE_READLINE=1'>)})]
                  spids: [16777215 521]
                )
              ]
              else_action: [
                (command.If
                  arms: [
                    (if_arm
                      cond: [
                        (command.Sentence
                          child: 
                            (C {(test)} {(DQ ($ VSub_DollarName '$FLAG_with_readline'))} 
                              {(Lit_Other '=')} {(1)}
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (C {(die)} 
                          {
                            (SQ <'readline was not detected on the system (--with-readline passed).'>)
                          }
                        )
                      ]
                      spids: [16777215 547]
                    )
                  ]
                  spids: [16777215 557]
                )
                (C {(echo)} {(SQ <'HAVE_READLINE='>)})
              ]
              spids: [531 567]
            )
          ]
          spids: [507]
        )
      spids: [503 506]
    )
    (command.FuncDef
      name: detect_and_echo_vars
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(test)} {(DQ ($ VSub_DollarName '$FLAG_without_readline'))} 
                          {(Lit_Other '=')} {(1)}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(echo)} {(SQ <'HAVE_READLINE='>)})]
                  spids: [16777215 592]
                )
              ]
              else_action: [(C {(detect_readline)})]
              spids: [602 608]
            )
            (C {(echo)} {(DQ ('PREFIX=') ($ VSub_DollarName '$FLAG_prefix'))})
          ]
          spids: [576]
        )
      spids: [572 575]
    )
    (command.FuncDef
      name: cc_print_expr
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:c_expr spids:[633])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [633]
                )
              ]
              spids: [631]
            )
            (command.SimpleCommand
              words: [{(cat)}]
              redirects: [
                (redir.Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$TMP') (/print_expr.c)}
                )
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 661
                  stdin_parts: [
                    ('#include <stdio.h>\n')
                    ('#include <sys/types.h>  /* size_t, pid_t */\n')
                    ('\n')
                    ('int main() {\n')
                    ('  printf(')
                    (Right_DoubleQuote '"')
                    ('%lu')
                    (Right_DoubleQuote '"')
                    (', ')
                    ($ VSub_DollarName '$c_expr')
                    (');\n')
                    ('}\n')
                  ]
                )
              ]
            )
            (C {(cc_or_die)} {(-o)} {($ VSub_DollarName '$TMP') (/print_expr)} 
              {($ VSub_DollarName '$TMP') (/print_expr.c)}
            )
            (command.SimpleCommand
              words: [{($ VSub_DollarName '$TMP') (/print_expr)}]
              redirects: [
                (redir.Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$TMP') (/print_expr.out)}
                )
              ]
            )
          ]
          spids: [628]
        )
      spids: [624 627]
    )
    (command.FuncDef
      name: check_sizeof
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:pp_var spids:[733])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [733]
                )
              ]
              spids: [731]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:c_type spids:[741])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                  spids: [741]
                )
              ]
              spids: [739]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:min_bytes spids:[749])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$3'))}
                  spids: [749]
                )
              ]
              spids: [747]
            )
            (C {(cc_print_expr)} {(DQ ('sizeof(') ($ VSub_DollarName '$c_type') (')'))})
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:actual_bytes spids:[768])
                  op: Equal
                  spids: [768]
                )
              ]
              spids: [766]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:actual_bytes spids:[771])
                  op: Equal
                  rhs: 
                    {
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [(C {(cat)} {($ VSub_DollarName '$TMP') (/print_expr.out)})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [772 777]
                      )
                    }
                  spids: [771]
                )
              ]
              spids: [771]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$min_bytes'))})
                            (C {(test)} {(DQ ($ VSub_DollarName '$actual_bytes'))} {(-lt)} 
                              {(DQ ($ VSub_DollarName '$min_bytes'))}
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(die)} 
                      {
                        (DQ ('sizeof(') ($ VSub_DollarName '$c_type') (') should be at least ') 
                          ($ VSub_DollarName '$min_bytes') ('; got ') ($ VSub_DollarName '$actual_bytes')
                        )
                      }
                    )
                  ]
                  spids: [16777215 806]
                )
              ]
              spids: [16777215 821]
            )
            (C {(echo)} 
              {
                (DQ ('#define ') ($ VSub_DollarName '$pp_var') (' ') ($ VSub_DollarName '$actual_bytes'))
              }
            )
          ]
          spids: [728]
        )
      spids: [724 727]
    )
    (command.FuncDef
      name: detect_c_language
      body: 
        (command.BraceGroup
          children: [
            (C {(check_sizeof)} {(SIZEOF_INT)} {(SQ <int>)} {(4)})
            (C {(check_sizeof)} {(SIZEOF_LONG)} {(SQ <long>)} {(4)})
            (C {(check_sizeof)} {(SIZEOF_VOID_P)} {(SQ <'void *'>)} {(4)})
            (C {(check_sizeof)} {(SIZEOF_SHORT)} {(SQ <short>)} {(2)})
            (C {(check_sizeof)} {(SIZEOF_FLOAT)} {(SQ <float>)} {(4)})
            (C {(check_sizeof)} {(SIZEOF_DOUBLE)} {(SQ <double>)} {(8)})
            (C {(check_sizeof)} {(SIZEOF_SIZE_T)} {(SQ <size_t>)} {(4)})
            (C {(check_sizeof)} {(SIZEOF_FPOS_T)} {(SQ <fpos_t>)} {(4)})
            (C {(check_sizeof)} {(SIZEOF_PID_T)} {(SQ <pid_t>)} {(4)})
            (C {(check_sizeof)} {(SIZEOF_OFF_T)} {(SQ <off_t>)} {(SQ )})
            (C {(check_sizeof)} {(SIZEOF_TIME_T)} {(SQ <time_t>)} {(SQ )})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(cc_statement)} {(HAVE_LONG_LONG)} {(SQ <'long long x; x = (long long)0;'>)})
                  ]
                  action: [(C {(check_sizeof)} {(SIZEOF_LONG_LONG)} {(SQ <'long long'>)} {(8)})]
                  spids: [16777215 1006]
                )
              ]
              spids: [16777215 1020]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(cc_statement)} {(HAVE_LONG_DOUBLE)} 
                      {(SQ <'long double x; x = (long double)0;'>)}
                    )
                  ]
                  action: [(C {(check_sizeof)} {(SIZEOF_LONG_DOUBLE)} {(SQ <'long double'>)} {(8)})]
                  spids: [16777215 1034]
                )
              ]
              spids: [16777215 1048]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [(C {(cc_statement)} {(HAVE_C99_BOOL)} {(SQ <'_Bool x; x = (_Bool)0;'>)})]
                  action: [(C {(check_sizeof)} {(SIZEOF__BOOL)} {(SQ <_Bool>)} {(1)})]
                  spids: [16777215 1063]
                )
              ]
              spids: [16777215 1081]
            )
            (C {(echo)} {(SQ <'#define HAVE_WCHAR_H 1'>)})
            (C {(echo)} {(SQ <'#define SIZEOF_WCHAR_T 4'>)})
            (command.SimpleCommand
              words: [{(cat)}]
              redirects: [
                (redir.Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$TMP') (/detect_va_list.c)}
                )
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 1144
                  stdin_parts: [
                    ('#include <stdarg.h>  /* C89 */\n')
                    ('int main() {\n')
                    ('  va_list list1, list2;\n')
                    ('  list1 = list2;\n')
                    ('}\n')
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(cc_quiet)} {($ VSub_DollarName '$TMP') (/detect_va_list.c)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(echo)} {(SQ )})]
                  spids: [16777215 1154]
                )
              ]
              else_action: [(C {(echo)} {(SQ <'#define VA_LIST_IS_ARRAY 1'>)})]
              spids: [1166 1176]
            )
          ]
          spids: [845]
        )
      spids: [841 844]
    )
    (command.FuncDef
      name: main
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          children: [(C {(cc_quiet)} {(build/detect-cc.c)})]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(die)} {(DQ ("Couldn't compile a basic C program (cc not installed?)"))})]
                  spids: [16777215 1206]
                )
              ]
              spids: [16777215 1216]
            )
            (C {(mkdir)} {(-p)} {(_build)})
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:sh_out spids:[1237])
                  op: Equal
                  rhs: {(_build/detected-config.sh)}
                  spids: [1237]
                )
              ]
              spids: [1235]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:c_out spids:[1243])
                  op: Equal
                  rhs: {(_build/detected-config.h)}
                  spids: [1243]
                )
              ]
              spids: [1241]
            )
            (command.SimpleCommand
              words: [{(detect_and_echo_vars)}]
              redirects: [
                (redir.Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$sh_out')}
                )
              ]
            )
            (command.SimpleCommand
              words: [{(detect_c_language)}]
              redirects: [
                (redir.Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$c_out')}
                )
              ]
            )
            (C {(log)} 
              {(DQ ('Wrote ') ($ VSub_DollarName '$sh_out') (' and ') ($ VSub_DollarName '$c_out'))}
            )
          ]
          spids: [1194]
        )
      spids: [1190 1193]
    )
    (command.FuncDef
      name: unittest
      body: 
        (command.BraceGroup
          children: [
            (C {(cc_print_expr)} {(SQ <'sizeof(int)'>)})
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:actual spids:[1291])
                  op: Equal
                  spids: [1291]
                )
              ]
              spids: [1289]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:actual spids:[1294])
                  op: Equal
                  rhs: 
                    {
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [(C {(cat)} {($ VSub_DollarName '$TMP') (/print_expr.out)})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [1295 1300]
                      )
                    }
                  spids: [1294]
                )
              ]
              spids: [1294]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(DQ ($ VSub_DollarName '$actual'))} {(Lit_Other '=')} {(4)})
                (C {(die)} {(DQ ('Expected 4, got ') ($ VSub_DollarName '$actual'))})
              ]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(check_sizeof)} {(SIZEOF_INT)} {(SQ <int>)} {(4)})
                (C {(die)} {(DQ (FAILED))})
              ]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(cc_statement)} {(HAVE_INT)} {(SQ <'int x = (int)0;'>)})
                (C {(die)} {(DQ (FAILED))})
              ]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(cc_statement)} {(HAVE_FOO)} {(SQ <'foo x = (foo)0;'>)})
                (C {(die)} {(DQ ('Expected to fail'))})
              ]
            )
          ]
          spids: [1279]
        )
      spids: [1275 1278]
    )
    (C {(main)} {(DQ ($ VSub_At '$@'))})
  ]
)