(command.CommandList
  children: [
    (command.ForEach
      iter_name: filename
      iter_words: [{(DQ ($ Id.VSub_At '$@'))}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:linecount)
                  op: assign_op.Equal
                  rhs: {(DQ <1>)}
                  spids: [20]
                )
              ]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          words: [{<read>} {<line>}]
                          more_env: [
                            (env_pair
                              name: IFS
                              val: {(DQ <Id.Lit_BadBackslash '\\'> <n>)}
                              spids: [28]
                            )
                          ]
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (C {<echo>} {(DQ (${ Id.VSub_Name linecount) <': '> ($ Id.VSub_DollarName '$line'))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:linecount)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.ArithSub
                                  anode: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_Plus
                                      left: {($ Id.VSub_DollarName '$linecount')}
                                      right: {<Id.Lit_Digits 1>}
                                    )
                                )
                              )
                            }
                          spids: [54]
                        )
                      ]
                    )
                  ]
                )
              redirects: [
                (redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {($ Id.VSub_DollarName '$filename')}
                )
              ]
            )
          ]
        )
    )
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
  ]
)