(command.CommandList
  children: [
    (command.Subshell
      command_list: 
        (command.CommandList
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:c)
                  op: assign_op.Equal
                  rhs: {(////////////////////////////////////////////////////////////////)}
                  spids: [7]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:skel)
                  op: assign_op.Equal
                  rhs: {(api-index-skel.txt)}
                  spids: [11]
                )
              ]
            )
            (C {(sed)} {(-e)} 
              {(SQ (Token id:Id.Lit_Chars val:'/^\\/\\/ table of contents begin/q' span_id:20))} {(DQ ($ Id.VSub_DollarName '$skel'))}
            )
            (C {(echo)} {(DQ ($ Id.VSub_DollarName '$c'))})
            (command.Pipeline
              children: [
                (C {(ls)} {(api-) (Id.Lit_Star '*') (.txt)})
                (command.WhileUntil
                  keyword: (Token id:Id.KW_While val:while span_id:45)
                  cond: [(C {(read)} {(filename)})]
                  body: 
                    (command.DoGroup
                      children: [
                        (command.Case
                          to_match: {(DQ ($ Id.VSub_DollarName '$filename'))}
                          arms: [
                            (case_arm
                              pat_list: [{(api-index-skel.txt)} {(api-index.txt)}]
                              action: [
                                (command.ControlFlow
                                  token: (Token id:Id.ControlFlow_Continue val:continue span_id:71)
                                )
                              ]
                              spids: [64 69 73 -1]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:title)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:80)
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {(sed)} {(-e)} {(1q)} 
                                            {(DQ ($ Id.VSub_DollarName '$filename'))}
                                          )
                                        ]
                                      )
                                  )
                                }
                              spids: [79]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:html)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (braced_var_sub
                                    token: (Token id:Id.VSub_Name val:filename span_id:95)
                                    suffix_op: 
                                      (suffix_op.Unary
                                        op_id: Id.VOp1_Percent
                                        arg_word: {(.txt)}
                                      )
                                  ) (.html)
                                }
                              spids: [93]
                            )
                          ]
                        )
                        (C {(echo)} 
                          {
                            (DQ ('* link:') ($ Id.VSub_DollarName '$html') ('[') 
                              ($ Id.VSub_DollarName '$title') (']')
                            )
                          }
                        )
                      ]
                    )
                )
              ]
              negated: F
            )
            (C {(echo)} {(DQ ($ Id.VSub_DollarName '$c'))})
            (C {(sed)} {(-n)} {(-e)} 
              {(SQ (Token id:Id.Lit_Chars val:'/^\\/\\/ table of contents end/,$p' span_id:130))} {(DQ ($ Id.VSub_DollarName '$skel'))}
            )
          ]
        )
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:139)
          fd: -1
          arg_word: {(api-index.txt) (Id.Lit_Other '+')}
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(test)} {(-f)} {(api-index.txt)})
                (command.Simple
                  words: [{(cmp)} {(api-index.txt)} {(api-index.txt) (Id.Lit_Other '+')}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:161)
                      fd: -1
                      arg_word: {(/dev/null)}
                    )
                  ]
                )
              ]
            )
          ]
          action: [(C {(rm)} {(-f)} {(api-index.txt) (Id.Lit_Other '+')})]
          spids: [144 164]
        )
      ]
      else_action: [(C {(mv)} {(api-index.txt) (Id.Lit_Other '+')} {(api-index.txt)})]
    )
  ]
)