(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PATH)
          op: assign_op.Equal
          rhs: 
            {<'/bin'> <Id.Lit_Colon ':'> <'/usr/bin'> <Id.Lit_Colon ':'> <'/usr/ucb'> <Id.Lit_Colon ':'> 
              <'/usr/old/bin'>
            }
          spids: [100]
        )
      ]
    )
    (C {<export>} {<PATH>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:D)
          op: assign_op.Equal
          rhs: {<.depend>}
          spids: [114]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:append)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [120]
        )
      ]
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})])
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_Number '$1'))}
              arms: [
                (case_arm
                  pat_list: [{<-a>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:append)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [148]
                        )
                      ]
                    )
                    (C {<shift>})
                  ]
                  spids: [144 145 154 -1]
                )
                (case_arm
                  pat_list: [{<-f>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:D)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$2')}
                          spids: [166]
                        )
                      ]
                    )
                    (command.Sentence
                      child: (C {<shift>})
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>})
                  ]
                  spids: [162 163 175 -1]
                )
                (case_arm
                  pat_list: [{<-p>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SED)
                          op: assign_op.Equal
                          rhs: {(SQ <'s;\\.o ; ;'>)}
                          spids: [191]
                        )
                      ]
                    )
                    (C {<shift>})
                  ]
                  spids: [187 188 199 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                  spids: [202 203 208 -1]
                )
              ]
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<Id.Lit_Equals '='>} {<0>} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<echo>} {(SQ <'usage: mkdep [-p] [-f depend_file] [cc_flags] file ...'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [216 230]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TMP)
          op: assign_op.Equal
          rhs: {<'/tmp/mkdep'> ($ Id.VSub_Dollar '$$')}
          spids: [247]
        )
      ]
    )
    (C {<trap>} {(SQ <'rm -f $TMP ; trap 2 ; kill -2 $$'>)} {<1>} {<2>} {<3>} {<13>} {<15>})
    (command.Pipeline
      children: [
        (C {<cc>} {<-M>} {($ Id.VSub_Star '$*')})
        (C {<sed>} 
          {
            (DQ <'\n'> <'\ts; '> <Id.Lit_BadBackslash '\\'> <'./; ;g\n'> <'\t/'> 
              <Id.Lit_BadBackslash '\\'> <'.c:'> <Id.Lit_Dollar '$'> <'/d\n'> <'\t'> ($ Id.VSub_DollarName '$SED')
            )
          }
        )
        (command.Simple
          words: [
            {<awk>}
            {
              (SQ <'{\n'> <'\tif ($1 != prev) {\n'> <'\t\tif (rec != "")\n'> <'\t\t\tprint rec;\n'> 
                <'\t\trec = $0;\n'> <'\t\tprev = $1;\n'> <'\t}\n'> <'\telse {\n'> <'\t\tif (length(rec $2) > 78) {\n'> <'\t\t\tprint rec;\n'> 
                <'\t\t\trec = $0;\n'> <'\t\t}\n'> <'\t\telse\n'> <'\t\t\trec = rec " " $2\n'> <'\t}\n'> <'}\n'> <'END {\n'> <'\tprint rec\n'> 
                <'}'>
              )
            }
          ]
          redirects: [
            (redir
              op: <Id.Redir_Great '>'>
              loc: (redir_loc.Fd fd:1)
              arg: {($ Id.VSub_DollarName '$TMP')}
            )
          ]
          do_fork: T
        )
      ]
      negated: F
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} 
                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<echo>} {(SQ <'mkdep: compile failed.'>)})
            (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$TMP')})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [324 338]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$append')} {<Id.Lit_Equals '='>} 
                      {<1>} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [{<cat>} {($ Id.VSub_DollarName '$TMP')}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$D')}
                )
              ]
              do_fork: T
            )
            (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$TMP')})
          ]
          spids: [362 375]
        )
      ]
      else_action: [(C {<mv>} {($ Id.VSub_DollarName '$TMP')} {($ Id.VSub_DollarName '$D')})]
    )
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
  ]
)