(command.CommandList
  children: [
    (C {(Id.Lit_Other ':')})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:Myname)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_Backtick val:'`' span_id:167)
                command_list: 
                  (command.CommandList
                    children: [(C {(basename)} {($ Id.VSub_Number '$0')} {(.sh)})]
                  )
              )
            }
          spids: [166]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:Mydir)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_Backtick val:'`' span_id:178)
                command_list: 
                  (command.CommandList
                    children: [(C {(dirname)} {($ Id.VSub_Number '$0')})]
                  )
              )
            }
          spids: [177]
        )
      ]
    )
    (command.Case
      to_match: 
        {
          (command_sub
            left_token: (Token id:Id.Left_Backtick val:'`' span_id:189)
            command_list: (command.CommandList children:[(C {(echo)} {(-n)} {(.)})])
          )
        }
      arms: [
        (case_arm
          pat_list: [{(-n) (Id.Lit_Star '*')}]
          action: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:N)
                      op: assign_op.Equal
                      rhs: (word.Empty)
                      spids: [205]
                    )
                  ]
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:206)
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:C)
                  op: assign_op.Equal
                  rhs: {(DQ (Id.Lit_Other '\\') (c))}
                  spids: [208]
                )
              ]
            )
          ]
          spids: [201 203 213 -1]
        )
        (case_arm
          pat_list: [{(Id.Lit_Star '*')}]
          action: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:N)
                      op: assign_op.Equal
                      rhs: {(-n)}
                      spids: [218]
                    )
                  ]
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:220)
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:C)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [222]
                )
              ]
            )
          ]
          spids: [215 216 223 -1]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:cc_include)
          op: assign_op.Equal
          rhs: {(-I/usr/include)}
          spids: [228]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TF)
          op: assign_op.Equal
          rhs: {(/tmp/dep.) ($ Id.VSub_Dollar '$$')}
          spids: [232]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:EF)
          op: assign_op.Equal
          rhs: {(/tmp/deperr.) ($ Id.VSub_Dollar '$$')}
          spids: [236]
        )
      ]
    )
    (command.Simple
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:240)
          fd: -1
          arg_word: {($ Id.VSub_DollarName '$EF')}
        )
      ]
    )
    (command.Case
      to_match: {(DQ ($ Id.VSub_Star '$*'))}
      arms: [
        (case_arm
          pat_list: [{(Id.Lit_Star '*') (-n) (Id.Lit_Star '*')}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:rc)
                  op: assign_op.Equal
                  rhs: {(/dev/null)}
                  spids: [262]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:norc)
                  op: assign_op.Equal
                  rhs: {(yes)}
                  spids: [266]
                )
              ]
            )
          ]
          spids: [253 256 268 -1]
        )
        (case_arm
          pat_list: [{(Id.Lit_Star '*')}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:rc)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$Mydir') (/.) (${ Id.VSub_Name Myname) (rc)}
                  spids: [274]
                )
              ]
            )
          ]
          spids: [270 271 283 -1]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:update)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [288]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:Include)
          op: assign_op.Equal
          rhs: {(include)}
          spids: [290]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(x) (DQ ($ Id.VSub_DollarName '$norc'))} 
                  {(Id.Lit_Equals '=')} {(x)} {(-a)} {(-f)} {($ Id.VSub_DollarName '$rc')} {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:314)
            )
          ]
          action: [(C {(.)} {($ Id.VSub_DollarName '$rc')})]
          spids: [294 316]
        )
      ]
      else_action: [
        (command.Simple
          words: [{(echo)} {(Id.Lit_Other ':')}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:342)
              fd: -1
              arg_word: {($ Id.VSub_DollarName '$rc')}
            )
          ]
        )
        (command.Simple
          words: [{(echo)} {(DQ ('# pre-processor for .c files'))}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_DGreat val:'>>' span_id:353)
              fd: -1
              arg_word: {($ Id.VSub_DollarName '$rc')}
            )
          ]
        )
        (command.ForEach
          iter_name: d
          iter_words: [{(/usr/libexec)} {(/usr/lib)} {(/usr/bin)} {(/lib)} {(/usr/ccs/bin)}]
          do_arg_iter: F
          body: 
            (command.DoGroup
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:cpp_c)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_DollarName '$d') (/cpp)}
                      spids: [382]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Id.Op_DAmp]
                  children: [
                    (C {(Id.Lit_LBracket '[')} {(-x)} {($ Id.VSub_DollarName '$cpp_c')} 
                      {(Id.Lit_RBracket ']')}
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Break val:break span_id:397)
                    )
                  ]
                )
              ]
            )
        )
        (command.If
          arms: [
            (if_arm
              cond: [
                (command.Sentence
                  child: 
                    (C {(Id.Lit_LBracket '[')} {(-x)} {($ Id.VSub_DollarName '$cpp_c')} 
                      {(Id.Lit_RBracket ']')}
                    )
                  terminator: (Token id:Id.Op_Semi val:';' span_id:414)
                )
              ]
              action: [
                (command.Simple
                  words: [{(echo)} {(Id.Lit_VarLike 'cpp_c=') ($ Id.VSub_DollarName '$cpp_c')}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_DGreat val:'>>' span_id:424)
                      fd: -1
                      arg_word: {($ Id.VSub_DollarName '$rc')}
                    )
                  ]
                )
              ]
              spids: [405 416]
            )
          ]
          else_action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cpp_c)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [432]
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(DQ ('#include <stdio.h>'))}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:445)
                  fd: -1
                  arg_word: {(/tmp/f) ($ Id.VSub_Dollar '$$') (.c)}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(DQ ('main() { return 0; }'))}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:458)
                  fd: -1
                  arg_word: {(/tmp/f) ($ Id.VSub_Dollar '$$') (.c)}
                )
              ]
            )
            (command.ForEach
              iter_name: arg
              iter_words: [{(-E)} {(-P)} {(-M)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ok)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_Backtick val:'`' span_id:486)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Pipeline
                                        children: [
                                          (command.Simple
                                            words: [
                                              {
                                                (braced_var_sub
                                                  token: 
                                                    (Token
                                                      id: Id.VSub_Name
                                                      val: REALCC
                                                      span_id: 490
                                                    )
                                                  suffix_op: 
                                                    (suffix_op.Unary
                                                      op_id: Id.VTest_ColonHyphen
                                                      arg_word: 
                                                        {
                                                          (braced_var_sub
                                                            token: 
                                                              (Token
                                                                id: Id.VSub_Name
                                                                val: CC
                                                                span_id: 493
                                                              )
                                                            suffix_op: 
                                                              (suffix_op.Unary
                                                                op_id: Id.VTest_ColonHyphen
                                                                arg_word: {(cc)}
                                                              )
                                                          )
                                                        }
                                                    )
                                                )
                                              }
                                              {($ Id.VSub_DollarName '$arg')}
                                              {(/tmp/f) ($ Id.VSub_Dollar '$$') (.c)}
                                            ]
                                            redirects: [
                                              (redir.Redir
                                                op: (Token id:Id.Redir_Great val:'2>' span_id:505)
                                                fd: 2
                                                arg_word: {(/dev/null)}
                                              )
                                            ]
                                          )
                                          (C {(grep)} 
                                            {
                                              (SQ 
                                                (Token
                                                  id: Id.Lit_Chars
                                                  val: '^#.*stdio.h'
                                                  span_id: 513
                                                )
                                              )
                                            }
                                          )
                                          (C {(tail)} {(-1)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [485]
                        )
                      ]
                    )
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$ok'))}
                      arms: [
                        (case_arm pat_list:[{(DQ )}] spids:[533 535 537 -1])
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*')}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:cpp_c)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (braced_var_sub
                                          token: (Token id:Id.VSub_Name val:REALCC span_id:547)
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op_id: Id.VTest_ColonHyphen
                                              arg_word: 
                                                {
                                                  (braced_var_sub
                                                    token: (Token id:Id.VSub_Name val:CC span_id:550)
                                                    suffix_op: 
                                                      (suffix_op.Unary
                                                        op_id: Id.VTest_ColonHyphen
                                                        arg_word: {(cc)}
                                                      )
                                                  )
                                                }
                                            )
                                        ) (' ') ($ Id.VSub_DollarName '$arg')
                                      )
                                    }
                                  spids: [544]
                                )
                              ]
                            )
                            (command.Simple
                              words: [
                                {(echo)}
                                {(Id.Lit_VarLike 'cpp_c=') 
                                  (DQ ("'") ($ Id.VSub_DollarName '$cpp_c') ("'"))
                                }
                              ]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:569)
                                  fd: -1
                                  arg_word: {($ Id.VSub_DollarName '$rc')}
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Break val:break span_id:574)
                            )
                          ]
                          spids: [540 541 575 -1]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {(rm)} {(-f)} {(/tmp/f) ($ Id.VSub_Dollar '$$') (.c)})
          ]
        )
      ]
    )
    (command.ShFunction
      name: clean_up
      body: 
        (command.BraceGroup
          children: [
            (C {(trap)} {(DQ )} {(2)} {(3)})
            (C {(trap)} {(0)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-s)} {($ Id.VSub_DollarName '$EF')} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:629)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [
                        {(egrep)}
                        {(-vi)}
                        {(DQ ('included from|warning'))}
                        {($ Id.VSub_DollarName '$EF')}
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:644)
                          fd: -1
                          arg_word: {(${ Id.VSub_Name EF) (2)}
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Id.Lit_LBracket '[')} {(-s)} {(${ Id.VSub_Name EF) (2)} 
                                  {(Id.Lit_RBracket ']')}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:664)
                            )
                          ]
                          action: [
                            (command.Simple
                              words: [{(cat)} {($ Id.VSub_DollarName '$EF')}]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:673)
                                  fd: -1
                                  arg_word: {(2)}
                                )
                              ]
                            )
                            (C {(rm)} {(-f)} {(.depend)})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:ests)
                                  op: assign_op.Equal
                                  rhs: {(1)}
                                  spids: [684]
                                )
                              ]
                            )
                          ]
                          spids: [652 666]
                        )
                      ]
                    )
                  ]
                  spids: [620 631]
                )
              ]
            )
            (C {(rm)} {(-f)} {($ Id.VSub_DollarName '$TF')} 
              {($ Id.VSub_DollarName '$EF') (Id.Lit_Star '*')}
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:704)
              arg_word: 
                {
                  (braced_var_sub
                    token: (Token id:Id.VSub_Name val:ests span_id:707)
                    suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(0)})
                  )
                }
            )
          ]
        )
    )
    (C {(trap)} {(clean_up)} {(0)})
    (C {(trap)} {(Id.ControlFlow_Exit exit)} {(2)} {(3)})
    (command.ShFunction
      name: get_incs
      body: 
        (command.BraceGroup
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$cpp'))}
              arms: [
                (case_arm
                  pat_list: [{(grep)}]
                  action: [
                    (command.Pipeline
                      children: [
                        (C {(egrep)} {(SQ (Token id:Id.Lit_Chars val:'^#[ \t]*include' span_id:760))} 
                          {($ Id.VSub_Star '$*')}
                        )
                        (C {(egrep)} {(-v)} {(DQ ($ Id.VSub_DollarName '$IGNORE'))})
                        (C {(sed)} {(-e)} 
                          {(SQ (Token id:Id.Lit_Chars val:'s/^.*include[^"<]*["<]//' span_id:784))} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/[">].*//g' span_id:790))}
                        )
                      ]
                      negated: F
                    )
                  ]
                  spids: [749 750 792 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (command.Pipeline
                      children: [
                        (command.Simple
                          words: [
                            {($ Id.VSub_DollarName '$cpp')}
                            {($ Id.VSub_DollarName '$cpp_opts')}
                            {($ Id.VSub_DollarName '$cc_include')}
                            {($ Id.VSub_Star '$*')}
                          ]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_DGreat val:'2>>' span_id:819)
                              fd: 2
                              arg_word: {($ Id.VSub_DollarName '$EF')}
                            )
                          ]
                        )
                        (C {(egrep)} {(SQ (Token id:Id.Lit_Chars val:'^#.*\\.h"' span_id:828))})
                        (C {(sed)} 
                          {(SQ (Token id:Id.Lit_Chars val:'s,^#.*"\\(.*\\)".*,\\1,' span_id:836))}
                        )
                        (C {(egrep)} {(-v)} {(DQ ($ Id.VSub_DollarName '$IGNORE'))})
                        (C {(sort)} {(-u)})
                      ]
                      negated: F
                    )
                  ]
                  spids: [795 796 855 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: gen_deps
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:llen)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [870]
                )
              ]
            )
            (C {(shift)})
            (command.ForEach
              iter_name: ifile
              iter_words: [{($ Id.VSub_Star '$*')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$cpp'))}
                      arms: [
                        (case_arm
                          pat_list: [{(grep)}]
                          action: [
                            (command.ForEach
                              iter_name: dir
                              iter_words: [
                                {($ Id.VSub_DollarName '$srcdir')}
                                {($ Id.VSub_DollarName '$dirlist')}
                                {(/usr/include)}
                              ]
                              do_arg_iter: F
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {(Id.Lit_LBracket '[')} {(-f)} 
                                          {
                                            (DQ ($ Id.VSub_DollarName '$dir') (/) 
                                              ($ Id.VSub_DollarName '$ifile')
                                            )
                                          } {(Id.Lit_RBracket ']')}
                                        )
                                        (command.ControlFlow
                                          token: 
                                            (Token
                                              id: Id.ControlFlow_Break
                                              val: break
                                              span_id: 937
                                            )
                                        )
                                      ]
                                    )
                                  ]
                                )
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-f)} 
                                          {
                                            (DQ ($ Id.VSub_DollarName '$dir') (/) 
                                              ($ Id.VSub_DollarName '$ifile')
                                            )
                                          } {(Id.Lit_RBracket ']')}
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:959)
                                    )
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:iline)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: 
                                                  (Token
                                                    id: Id.Left_Backtick
                                                    val: '`'
                                                    span_id: 969
                                                  )
                                                command_list: 
                                                  (command.CommandList
                                                    children: [
                                                      (command.Pipeline
                                                        children: [
                                                          (command.Simple
                                                            words: [
                                                              {(grep)}
                                                              {(-n)}
                                                              {(DQ ('.*include.*['))}
                                                              {($ Id.VSub_DollarName '$file')}
                                                            ]
                                                            redirects: [
                                                              (redir.Redir
                                                                op: 
                                                                  (Token
                                                                    id: Id.Redir_Less
                                                                    val: '<'
                                                                    span_id: 983
                                                                  )
                                                                fd: -1
                                                                arg_word: 
                                                                  {(Id.Lit_RBracket ']') 
                                                                    ($ Id.VSub_DollarName '$ifile') (Id.Lit_LBracket '[') (DQ ('>]'))
                                                                  }
                                                              )
                                                            ]
                                                          )
                                                          (C {(cut)} {(-d) (Id.Lit_Other ':')} {(-f1)})
                                                        ]
                                                        negated: F
                                                      )
                                                    ]
                                                  )
                                              )
                                            }
                                          spids: [968]
                                        )
                                      ]
                                    )
                                    (command.Simple
                                      words: [
                                        {(echo)}
                                        {
                                          (DQ 
                                            (word_part.EscapedLiteral
                                              token: 
                                                (Token
                                                  id: Id.Lit_EscapedChar
                                                  val: '\\"'
                                                  span_id: 1007
                                                )
                                            ) ($ Id.VSub_DollarName '$file') 
                                            (word_part.EscapedLiteral
                                              token: 
                                                (Token
                                                  id: Id.Lit_EscapedChar
                                                  val: '\\"'
                                                  span_id: 1009
                                                )
                                            ) (', line ') ($ Id.VSub_DollarName '$iline') (': cannot find include file ') 
                                            (word_part.EscapedLiteral
                                              token: 
                                                (Token
                                                  id: Id.Lit_EscapedChar
                                                  val: '\\"'
                                                  span_id: 1013
                                                )
                                            ) ($ Id.VSub_DollarName '$ifile') 
                                            (word_part.EscapedLiteral
                                              token: 
                                                (Token
                                                  id: Id.Lit_EscapedChar
                                                  val: '\\"'
                                                  span_id: 1015
                                                )
                                            )
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (redir.Redir
                                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:1018)
                                          fd: -1
                                          arg_word: {($ Id.VSub_DollarName '$EF')}
                                        )
                                      ]
                                    )
                                    (command.ControlFlow
                                      token: 
                                        (Token
                                          id: Id.ControlFlow_Continue
                                          val: continue
                                          span_id: 1031
                                        )
                                    )
                                  ]
                                  spids: [944 961]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:ifile)
                                  op: assign_op.Equal
                                  rhs: 
                                    {($ Id.VSub_DollarName '$dir') (/) ($ Id.VSub_DollarName '$ifile')}
                                  spids: [1037]
                                )
                              ]
                            )
                            (command.Case
                              to_match: 
                                {
                                  (command_sub
                                    left_token: (Token id:Id.Left_Backtick val:'`' span_id:1051)
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {(grep)} {(DQ ($ Id.VSub_DollarName '$ifile'))} 
                                            {($ Id.VSub_DollarName '$TF')}
                                          )
                                        ]
                                      )
                                  )
                                }
                              arms: [
                                (case_arm
                                  pat_list: [{(DQ )}]
                                  action: [
                                    (command.Simple
                                      words: [{(echo)} {(DQ ($ Id.VSub_DollarName '$ifile'))}]
                                      redirects: [
                                        (redir.Redir
                                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:1076)
                                          fd: -1
                                          arg_word: {($ Id.VSub_DollarName '$TF')}
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [1066 1068 1079 -1]
                                )
                                (case_arm
                                  pat_list: [{(Id.Lit_Star '*')}]
                                  action: [
                                    (command.ControlFlow
                                      token: 
                                        (Token
                                          id: Id.ControlFlow_Continue
                                          val: continue
                                          span_id: 1085
                                        )
                                    )
                                  ]
                                  spids: [1082 1083 1086 -1]
                                )
                              ]
                            )
                          ]
                          spids: [899 900 1095 -1]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:len)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_Backtick val:'`' span_id:1104)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(expr)} {(DQ ($ Id.VSub_DollarName '$ifile') (' '))} 
                                        {(Id.Lit_Other ':')} {(SQ (Token id:Id.Lit_Chars val:'.*' span_id:1117))}
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [1103]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Id.Lit_LBracket '[')} 
                                  {
                                    (DQ 
                                      (command_sub
                                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:1127)
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (C {(expr)} {($ Id.VSub_DollarName '$llen')} 
                                                {(Id.Lit_Other '+')} {($ Id.VSub_DollarName '$len')}
                                              )
                                            ]
                                          )
                                      )
                                    )
                                  } {(-gt)} 
                                  {
                                    (braced_var_sub
                                      token: (Token id:Id.VSub_Name val:width span_id:1143)
                                      suffix_op: 
                                        (suffix_op.Unary
                                          op_id: Id.VTest_ColonHyphen
                                          arg_word: {(76)}
                                        )
                                    )
                                  } {(Id.Lit_RBracket ']')}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:1149)
                            )
                          ]
                          action: [
                            (command.Simple
                              words: [
                                {(echo)}
                                {
                                  (DQ 
                                    (word_part.EscapedLiteral
                                      token: (Token id:Id.Lit_EscapedChar val:'\\\\' span_id:1157)
                                    )
                                  )
                                }
                              ]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:1160)
                                  fd: -1
                                  arg_word: {(.depend)}
                                )
                              ]
                            )
                            (command.Simple
                              words: [
                                {(echo)}
                                {($ Id.VSub_DollarName '$N')}
                                {(DQ ('\t') ($ Id.VSub_DollarName '$C'))}
                              ]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:1174)
                                  fd: -1
                                  arg_word: {(.depend)}
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:llen)
                                  op: assign_op.Equal
                                  rhs: {(8)}
                                  spids: [1179]
                                )
                              ]
                            )
                          ]
                          spids: [1122 1151]
                        )
                      ]
                    )
                    (command.Simple
                      words: [
                        {(echo)}
                        {($ Id.VSub_DollarName '$N')}
                        {(DQ ($ Id.VSub_DollarName '$ifile') (' ') ($ Id.VSub_DollarName '$C'))}
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:1196)
                          fd: -1
                          arg_word: {(.depend)}
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:llen)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_Backtick val:'`' span_id:1202)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(expr)} {($ Id.VSub_DollarName '$llen')} {(Id.Lit_Other '+')} 
                                        {($ Id.VSub_DollarName '$len')}
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [1201]
                        )
                      ]
                    )
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$cpp'))}
                      arms: [
                        (case_arm
                          pat_list: [{(grep)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:ilist)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:1235)
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (C {(get_incs)} {($ Id.VSub_DollarName '$ifile')})
                                            ]
                                          )
                                      )
                                    }
                                  spids: [1234]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$ilist'))} 
                                  {(Id.Lit_RBracket ']')}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:llen)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (command_sub
                                            left_token: 
                                              (Token
                                                id: Id.Left_Backtick
                                                val: '`'
                                                span_id: 1258
                                              )
                                            command_list: 
                                              (command.CommandList
                                                children: [
                                                  (C {(gen_deps)} {($ Id.VSub_DollarName '$llen')} 
                                                    {($ Id.VSub_DollarName '$ilist')}
                                                  )
                                                ]
                                              )
                                          )
                                        }
                                      spids: [1257]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [1226 1227 1269 -1]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {(echo)} {($ Id.VSub_DollarName '$llen')})
          ]
        )
    )
    (command.ForEach
      iter_name: f
      iter_words: [{(makefile)} {(Makefile)}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(test)} {(-s)} {($ Id.VSub_DollarName '$f')})
                (command.BraceGroup
                  children: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:MAKEFILE)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_DollarName '$f')}
                              spids: [1308]
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1310)
                    )
                    (command.Sentence
                      child: 
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Break val:break span_id:1312)
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1313)
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MAKEFILE)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: (Token id:Id.VSub_Name val:MAKEFILE span_id:1322)
                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(makefile)})
              )
            }
          spids: [1320]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:IGNORE)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: (Token id:Id.VSub_Name val:IGNORE span_id:1329)
                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(DQ ('^-'))})
              )
            }
          spids: [1327]
        )
      ]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:obj) op:assign_op.Equal rhs:{(o)} spids:[1339])]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:cpp_opts)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [1342]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:vpath)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [1347]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:append)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [1349]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:progDep)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [1351]
        )
      ]
    )
    (C {(Id.KW_Set set)} {(--)} 
      {
        (command_sub
          left_token: (Token id:Id.Left_Backtick val:'`' span_id:1358)
          command_list: 
            (command.CommandList
              children: [(C {(getopt)} {(DQ ('AanNV:s:w:o:I:D:b:f:i:p'))} {(DQ ($ Id.VSub_At '$@'))})]
            )
        )
      }
    )
    (command.ForEach
      iter_name: key
      iter_words: [{(DQ ($ Id.VSub_At '$@'))}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {($ Id.VSub_DollarName '$key')}
              arms: [
                (case_arm
                  pat_list: [{(--)}]
                  action: [
                    (command.Sentence
                      child: (C {(shift)})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1396)
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Break val:break span_id:1398)
                    )
                  ]
                  spids: [1392 1393 1399 -1]
                )
                (case_arm
                  pat_list: [{(-A)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:Include)
                          op: assign_op.Equal
                          rhs: (word.Empty)
                          spids: [1405]
                        )
                      ]
                    )
                  ]
                  spids: [1402 1403 1406 -1]
                )
                (case_arm
                  pat_list: [{(-a)}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:append)
                              op: assign_op.Equal
                              rhs: {(yes)}
                              spids: [1415]
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1417)
                    )
                    (C {(shift)})
                  ]
                  spids: [1412 1413 1420 -1]
                )
                (case_arm
                  pat_list: [{(-n)}]
                  action: [(C {(shift)})]
                  spids: [1423 1424 1427 -1]
                )
                (case_arm
                  pat_list: [{(-N)}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:update)
                              op: assign_op.Equal
                              rhs: {(no)}
                              spids: [1436]
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1438)
                    )
                    (C {(shift)})
                  ]
                  spids: [1433 1434 1441 -1]
                )
                (case_arm
                  pat_list: [{(-I)}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:cpp_opts)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ ($ Id.VSub_DollarName '$cpp_opts') ($ Id.VSub_Number '$1') 
                                    ($ Id.VSub_Number '$2') (' ')
                                  )
                                }
                              spids: [1450]
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1457)
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:dirlist)
                              op: assign_op.Equal
                              rhs: 
                                {(DQ ($ Id.VSub_DollarName '$dirlist') (' ') ($ Id.VSub_Number '$2'))}
                              spids: [1459]
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1465)
                    )
                    (C {(shift)} {(2)})
                  ]
                  spids: [1447 1448 1470 -1]
                )
                (case_arm
                  pat_list: [{(-o)}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:obj)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_Number '$2')}
                              spids: [1476]
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1478)
                    )
                    (C {(shift)} {(2)})
                  ]
                  spids: [1473 1474 1483 -1]
                )
                (case_arm
                  pat_list: [{(-s)}]
                  action: [(C {(shift)} {(2)})]
                  spids: [1486 1487 1492 -1]
                )
                (case_arm
                  pat_list: [{(-w)}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:width)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_Number '$2')}
                              spids: [1501]
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1503)
                    )
                    (C {(shift)} {(2)})
                  ]
                  spids: [1498 1499 1508 -1]
                )
                (case_arm
                  pat_list: [{(-f)}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:MAKEFILE)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_Number '$2')}
                              spids: [1514]
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1516)
                    )
                    (C {(shift)} {(2)})
                  ]
                  spids: [1511 1512 1521 -1]
                )
                (case_arm
                  pat_list: [{(-b)}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:BASEDIR)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_Number '$2')}
                              spids: [1527]
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1529)
                    )
                    (C {(shift)} {(2)})
                  ]
                  spids: [1524 1525 1534 -1]
                )
                (case_arm
                  pat_list: [{(-i)}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:IGNORE)
                              op: assign_op.Equal
                              rhs: {(DQ ($ Id.VSub_Number '$2'))}
                              spids: [1540]
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1544)
                    )
                    (C {(shift)} {(2)})
                  ]
                  spids: [1537 1538 1549 -1]
                )
                (case_arm
                  pat_list: [{(-D)}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:cpp_opts)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ ($ Id.VSub_DollarName '$cpp_opts') ($ Id.VSub_Number '$1') 
                                    ($ Id.VSub_Number '$2') (' ')
                                  )
                                }
                              spids: [1558]
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1565)
                    )
                    (C {(shift)} {(2)})
                  ]
                  spids: [1555 1556 1570 -1]
                )
                (case_arm
                  pat_list: [{(-V)}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:VPATH)
                              op: assign_op.Equal
                              rhs: {(DQ ($ Id.VSub_Number '$2'))}
                              spids: [1576]
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1580)
                    )
                    (C {(shift)} {(2)})
                  ]
                  spids: [1573 1574 1585 -1]
                )
                (case_arm
                  pat_list: [{(-p)}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:progDep)
                              op: assign_op.Equal
                              rhs: {(yes)}
                              spids: [1594]
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1596)
                    )
                    (C {(shift)})
                  ]
                  spids: [1591 1592 1599 -1]
                )
              ]
            )
          ]
        )
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$VPATH'))} {(Id.Lit_RBracket ']')})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:vpath)
              op: assign_op.Equal
              rhs: 
                {
                  (command_sub
                    left_token: (Token id:Id.Left_Backtick val:'`' span_id:1618)
                    command_list: 
                      (command.CommandList
                        children: [
                          (command.Sentence
                            child: 
                              (command.ShAssignment
                                pairs: [
                                  (assign_pair
                                    lhs: (sh_lhs_expr.Name name:IFS)
                                    op: assign_op.Equal
                                    rhs: {(Id.Lit_Other ':')}
                                    spids: [1621]
                                  )
                                ]
                              )
                            terminator: (Token id:Id.Op_Semi val:';' span_id:1623)
                          )
                          (command.Sentence
                            child: (C {(Id.KW_Set set)} {(--)} {($ Id.VSub_DollarName '$VPATH')})
                            terminator: (Token id:Id.Op_Semi val:';' span_id:1630)
                          )
                          (C {(echo)} {($ Id.VSub_Star '$*')})
                        ]
                      )
                  )
                }
              spids: [1617]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$append'))} {(Id.Lit_RBracket ']')})
        (command.Simple
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:1648)
              fd: -1
              arg_word: {(.depend)}
            )
          ]
        )
      ]
    )
    (command.ForEach
      iter_name: file
      iter_words: [{($ Id.VSub_Star '$*')}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cpp)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [1664]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:suffix)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:1668)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(expr)} {($ Id.VSub_DollarName '$file')} {(Id.Lit_Other ':')} 
                                {(SQ (Token id:Id.Lit_Chars val:'.*\\.\\([^.]*\\)' span_id:1684))}
                              )
                            ]
                          )
                      )
                    }
                  spids: [1667]
                )
              ]
            )
            (C {(eval)} 
              {(Id.Lit_VarLike 'cpp=') 
                (word_part.EscapedLiteral
                  token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:1693)
                ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:1694)) 
                (Id.Lit_LBrace '{') (cpp_) (${ Id.VSub_Name suffix) (Id.Lit_Other ':') (-grep) (Id.Lit_RBrace '}') 
                (word_part.EscapedLiteral
                  token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:1703)
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-f)} 
                          {($ Id.VSub_DollarName '$file')} {(-a)} {(DQ ($ Id.VSub_DollarName '$vpath'))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1725)
                    )
                  ]
                  action: [
                    (command.ForEach
                      iter_name: d
                      iter_words: [{(.)} {($ Id.VSub_DollarName '$vpath')}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(Id.Lit_LBracket '[')} {(-f)} 
                                  {($ Id.VSub_DollarName '$d') (/) ($ Id.VSub_DollarName '$file')} {(Id.Lit_RBracket ']')}
                                )
                                (command.BraceGroup
                                  children: [
                                    (command.Sentence
                                      child: 
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:file)
                                              op: assign_op.Equal
                                              rhs: 
                                                {($ Id.VSub_DollarName '$d') (/) 
                                                  ($ Id.VSub_DollarName '$file')
                                                }
                                              spids: [1758]
                                            )
                                          ]
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:1762)
                                    )
                                    (command.Sentence
                                      child: 
                                        (command.ControlFlow
                                          token: 
                                            (Token
                                              id: Id.ControlFlow_Break
                                              val: break
                                              span_id: 1764
                                            )
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:1765)
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                  spids: [1708 1727]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:srcdir)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:1777)
                        command_list: 
                          (command.CommandList
                            children: [(C {(dirname)} {($ Id.VSub_DollarName '$file')})]
                          )
                      )
                    }
                  spids: [1776]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:base)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:1787)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(basename)} {($ Id.VSub_DollarName '$file')} 
                                {(.) ($ Id.VSub_DollarName '$suffix')}
                              )
                            ]
                          )
                      )
                    }
                  spids: [1786]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ilist)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:1802)
                        command_list: 
                          (command.CommandList
                            children: [(C {(get_incs)} {($ Id.VSub_DollarName '$file')})]
                          )
                      )
                    }
                  spids: [1801]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$ilist'))} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1821)
                    )
                  ]
                  action: [
                    (command.Simple
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:1826)
                          fd: -1
                          arg_word: {($ Id.VSub_DollarName '$TF')}
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$progDep'))} 
                                  {(Id.Lit_RBracket ']')}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:1840)
                            )
                          ]
                          action: [
                            (command.Simple
                              words: [
                                {(echo)}
                                {
                                  (DQ ($ Id.VSub_DollarName '$base') (':\t') 
                                    ($ Id.VSub_DollarName '$file') (' ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\\\' span_id:1852))
                                  )
                                }
                              ]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:1855)
                                  fd: -1
                                  arg_word: {(.depend)}
                                )
                              ]
                            )
                          ]
                          spids: [1831 1842]
                        )
                      ]
                      else_action: [
                        (command.Simple
                          words: [
                            {(echo)}
                            {
                              (DQ ($ Id.VSub_DollarName '$base') (.) ($ Id.VSub_DollarName '$obj') 
                                (':\t') ($ Id.VSub_DollarName '$file') (' ') 
                                (word_part.EscapedLiteral
                                  token: (Token id:Id.Lit_EscapedChar val:'\\\\' span_id:1872)
                                )
                              )
                            }
                          ]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_DGreat val:'>>' span_id:1875)
                              fd: -1
                              arg_word: {(.depend)}
                            )
                          ]
                        )
                      ]
                    )
                    (command.Simple
                      words: [
                        {(echo)}
                        {($ Id.VSub_DollarName '$N')}
                        {(DQ ('\t') ($ Id.VSub_DollarName '$C'))}
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:1892)
                          fd: -1
                          arg_word: {(.depend)}
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:llen)
                          op: assign_op.Equal
                          rhs: {(8)}
                          spids: [1897]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:llen)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_Backtick val:'`' span_id:1902)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(gen_deps)} {($ Id.VSub_DollarName '$llen')} 
                                        {($ Id.VSub_DollarName '$ilist')}
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [1901]
                        )
                      ]
                    )
                    (command.Simple
                      words: [{(echo)}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:1915)
                          fd: -1
                          arg_word: {(.depend)}
                        )
                      ]
                    )
                    (command.Simple
                      words: [{(echo)}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:1922)
                          fd: -1
                          arg_word: {(.depend)}
                        )
                      ]
                    )
                  ]
                  spids: [1812 1823]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$progDep'))} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1936)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [
                        {(echo)}
                        {(DQ ($ Id.VSub_DollarName '$base') (':\t') ($ Id.VSub_DollarName '$file'))}
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:1949)
                          fd: -1
                          arg_word: {(.depend)}
                        )
                      ]
                    )
                    (command.Simple
                      words: [{(echo)}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:1956)
                          fd: -1
                          arg_word: {(.depend)}
                        )
                      ]
                    )
                  ]
                  spids: [1927 1938]
                )
              ]
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(Id.Lit_LBracket '[')} {(-s)} {(.depend)} {(Id.Lit_RBracket ']')})
              terminator: (Token id:Id.Op_Semi val:';' span_id:1975)
            )
          ]
          action: [
            (C {(mv)} {(.depend)} {($ Id.VSub_DollarName '$TF')})
            (command.Pipeline
              children: [
                (command.BraceGroup
                  children: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Id.Op_DAmp Id.Op_DPipe]
                          children: [
                            (C {(test)} {(DQ ($ Id.VSub_DollarName '$BASEDIR'))})
                            (C {(sed)} {(-e)} 
                              {
                                (DQ ('s;') ($ Id.VSub_DollarName '$BASEDIR') (';') 
                                  (word_part.EscapedLiteral
                                    token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:2009)
                                  ) ('(BASEDIR);g')
                                )
                              } {($ Id.VSub_DollarName '$TF')}
                            )
                            (C {(cat)} {($ Id.VSub_DollarName '$TF')})
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:2020)
                    )
                  ]
                )
                (command.Simple
                  words: [
                    {(sed)}
                    {(SQ (Token id:Id.Lit_Chars val:'s;\\([^.]\\)\\./;\\1;g' span_id:2030))}
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:2033)
                      fd: -1
                      arg_word: {(.depend)}
                    )
                  ]
                )
              ]
              negated: F
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(x) ($ Id.VSub_DollarName '$update')} 
                          {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(xno)} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:2065)
                    )
                  ]
                  action: [
                    (C {(trap)} {(DQ )} {(2)})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:depended)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_Backtick val:'`' span_id:2087)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(grep)} 
                                        {
                                          (SQ 
                                            (Token
                                              id: Id.Lit_Chars
                                              val: 'include.*\\.depend'
                                              span_id: 2095
                                            )
                                          )
                                        } {($ Id.VSub_DollarName '$MAKEFILE')}
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [2086]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [(C {(test)} {(DQ ($ Id.VSub_DollarName '$depended'))}) (C {(clean_up)})]
                    )
                    (command.Simple
                      words: [
                        {(sed)}
                        {
                          (SQ 
                            (Token
                              id: Id.Lit_Chars
                              val: '/^# DO NOT DELETE.*depend.*$/,$d'
                              span_id: 2118
                            )
                          )
                        }
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Less val:'<' span_id:2121)
                          fd: -1
                          arg_word: {($ Id.VSub_DollarName '$MAKEFILE')}
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:2125)
                          fd: -1
                          arg_word: {($ Id.VSub_DollarName '$TF')}
                        )
                      ]
                    )
                    (C {(mv)} {($ Id.VSub_DollarName '$TF')} {($ Id.VSub_DollarName '$MAKEFILE')})
                    (command.Simple
                      words: [{(cat)}]
                      redirects: [
                        (redir.HereDoc
                          op: (Token id:Id.Redir_DLess val:'<<' span_id:2139)
                          fd: -1
                          here_begin: {(Id.KW_Bang '!')}
                          here_end_span_id: 2152
                          stdin_parts: [
                            ('# DO NOT DELETE THIS LINE -- make depend depends on it\n')
                            ('# Do not edit anything below, it was added automagically by ')
                            ($ Id.VSub_DollarName '$Myname')
                            ('.\n')
                            ('\n')
                          ]
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:2142)
                          fd: -1
                          arg_word: {($ Id.VSub_DollarName '$MAKEFILE')}
                        )
                      ]
                    )
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$Include'))}
                      arms: [
                        (case_arm
                          pat_list: [{(DQ )}]
                          action: [
                            (command.Simple
                              words: [{(cat)} {(.depend)}]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:2173)
                                  fd: -1
                                  arg_word: {($ Id.VSub_DollarName '$MAKEFILE')}
                                )
                              ]
                            )
                          ]
                          spids: [2165 2167 2176 -1]
                        )
                        (case_arm
                          pat_list: [{(.include)}]
                          action: [
                            (command.Simple
                              words: [
                                {(echo)}
                                {(SQ (Token id:Id.Lit_Chars val:'.include ".depend"' span_id:2185))}
                              ]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:2188)
                                  fd: -1
                                  arg_word: {($ Id.VSub_DollarName '$MAKEFILE')}
                                )
                              ]
                            )
                          ]
                          spids: [2179 2180 2191 -1]
                        )
                        (case_arm
                          pat_list: [{(include)}]
                          action: [
                            (command.Simple
                              words: [{(echo)} {(include)} {(.depend)}]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:2203)
                                  fd: -1
                                  arg_word: {($ Id.VSub_DollarName '$MAKEFILE')}
                                )
                              ]
                            )
                          ]
                          spids: [2194 2195 2206 -1]
                        )
                      ]
                    )
                  ]
                  spids: [2052 2067]
                )
              ]
            )
          ]
          spids: [1966 1977]
        )
      ]
    )
    (C {(clean_up)})
  ]
)