(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"common tail optimization">)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:z) op:Equal rhs:{(zzzzzzzz)} spids:[15])]
          spids: [15]
        )
      terminator: <Op_Semi ";">
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:z)
              op: Equal
              rhs: 
                {
                  (DQ ($ VSub_Name "$z") ($ VSub_Name "$z") ($ VSub_Name "$z") ($ VSub_Name "$z") 
                    ($ VSub_Name "$z") ($ VSub_Name "$z") ($ VSub_Name "$z") ($ VSub_Name "$z")
                  )
                }
              spids: [22]
            )
          ]
          spids: [22]
        )
      terminator: <Op_Semi ";">
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:z)
              op: Equal
              rhs: 
                {
                  (DQ ($ VSub_Name "$z") ($ VSub_Name "$z") ($ VSub_Name "$z") ($ VSub_Name "$z") 
                    ($ VSub_Name "$z") ($ VSub_Name "$z") ($ VSub_Name "$z") ($ VSub_Name "$z")
                  )
                }
              spids: [38]
            )
          ]
          spids: [38]
        )
      terminator: <Op_Semi ";">
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:z)
              op: Equal
              rhs: {(DQ ($ VSub_Name "$z") ($ VSub_Name "$z") ($ VSub_Name "$z") ($ VSub_Name "$z"))}
              spids: [54]
            )
          ]
          spids: [54]
        )
      terminator: <Op_Semi ";">
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:z2047)
              op: Equal
              rhs: 
                {
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [
                          (C {(expr)} {(DQ ($ VSub_Name "$z"))} {(Lit_Other ":")} {(SQ <".\\(.*\\)">)})
                        ]
                      )
                    left_token: <Left_CommandSub "$(">
                    spids: [67 79]
                  )
                }
              spids: [66]
            )
          ]
          spids: [66]
        )
      terminator: <Op_Semi ";">
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:x) op:Equal rhs:{(zzzzzzzzzz)} spids:[87])]
          spids: [87]
        )
      terminator: <Op_Semi ";">
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:y)
              op: Equal
              rhs: 
                {
                  (DQ ($ VSub_Name "$x") ($ VSub_Name "$x") ($ VSub_Name "$x") ($ VSub_Name "$x") 
                    ($ VSub_Name "$x") ($ VSub_Name "$x") ($ VSub_Name "$x") ($ VSub_Name "$x") ($ VSub_Name "$x") ($ VSub_Name "$x")
                  )
                }
              spids: [94]
            )
          ]
          spids: [94]
        )
      terminator: <Op_Semi ";">
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:z)
              op: Equal
              rhs: 
                {
                  (DQ ($ VSub_Name "$y") ($ VSub_Name "$y") ($ VSub_Name "$y") ($ VSub_Name "$y") 
                    ($ VSub_Name "$y") ($ VSub_Name "$y") ($ VSub_Name "$y") ($ VSub_Name "$y") ($ VSub_Name "$y") ($ VSub_Name "$y")
                  )
                }
              spids: [112]
            )
          ]
          spids: [112]
        )
      terminator: <Op_Semi ";">
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:z1000) op:Equal rhs:{($ VSub_Name "$z")} spids:[130])]
      spids: [130]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:z100) op:Equal rhs:{($ VSub_Name "$y")} spids:[133])]
      spids: [133]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:z10) op:Equal rhs:{($ VSub_Name "$x")} spids:[136])]
      spids: [136]
    )
    (FuncDef
      name: zs
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:count)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$1"))}
                  spids: [147]
                )
              ]
              spids: [147]
            )
            (While
              cond: [(C {(test)} {(DQ ($ VSub_Name "$count"))} {(-ge)} {(1000)})]
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:count)
                          op: Equal
                          rhs: 
                            {
                              (ArithSubPart
                                anode: 
                                  (ArithBinary
                                    op_id: Arith_Minus
                                    left: (ArithWord w:{($ VSub_Name "$count")})
                                    right: (ArithWord w:{(Lit_Digits 1000)})
                                  )
                                spids: [170 177]
                              )
                            }
                          spids: [169]
                        )
                      ]
                      spids: [169]
                    )
                    (C {(printf)} {(DQ ("%s"))} {($ VSub_Name "$z1000")})
                  ]
                  spids: [166 189]
                )
            )
            (While
              cond: [(C {(test)} {(DQ ($ VSub_Name "$count"))} {(-ge)} {(100)})]
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:count)
                          op: Equal
                          rhs: 
                            {
                              (ArithSubPart
                                anode: 
                                  (ArithBinary
                                    op_id: Arith_Minus
                                    left: (ArithWord w:{($ VSub_Name "$count")})
                                    right: (ArithWord w:{(Lit_Digits 100)})
                                  )
                                spids: [209 216]
                              )
                            }
                          spids: [208]
                        )
                      ]
                      spids: [208]
                    )
                    (C {(printf)} {(DQ ("%s"))} {($ VSub_Name "$z100")})
                  ]
                  spids: [205 228]
                )
            )
            (While
              cond: [(C {(test)} {(DQ ($ VSub_Name "$count"))} {(-ge)} {(10)})]
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:count)
                          op: Equal
                          rhs: 
                            {
                              (ArithSubPart
                                anode: 
                                  (ArithBinary
                                    op_id: Arith_Minus
                                    left: (ArithWord w:{($ VSub_Name "$count")})
                                    right: (ArithWord w:{(Lit_Digits 10)})
                                  )
                                spids: [248 255]
                              )
                            }
                          spids: [247]
                        )
                      ]
                      spids: [247]
                    )
                    (C {(printf)} {(DQ ("%s"))} {($ VSub_Name "$z10")})
                  ]
                  spids: [244 267]
                )
            )
            (While
              cond: [(C {(test)} {(DQ ($ VSub_Name "$count"))} {(-ge)} {(1)})]
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:count)
                          op: Equal
                          rhs: 
                            {
                              (ArithSubPart
                                anode: 
                                  (ArithBinary
                                    op_id: Arith_Minus
                                    left: (ArithWord w:{($ VSub_Name "$count")})
                                    right: (ArithWord w:{(Lit_Digits 1)})
                                  )
                                spids: [287 294]
                              )
                            }
                          spids: [286]
                        )
                      ]
                      spids: [286]
                    )
                    (C {(printf)} {(DQ (z))})
                  ]
                  spids: [283 304]
                )
            )
          ]
          spids: [144]
        )
      spids: [140 143]
    )
    (FuncDef
      name: zc
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: 
                (C {(sed)} {(-e)} {(DQ ("/^index/d"))} {(-e)} {(DQ (s/) ($ VSub_Name "$z1000") (/Q/g))} 
                  {(-e)} {(DQ (s/QQQQQQQQQ/Z9000/g))} {(-e)} {(DQ (s/QQQQQQQQ/Z8000/g))} {(-e)} {(DQ (s/QQQQQQQ/Z7000/g))} {(-e)} 
                  {(DQ (s/QQQQQQ/Z6000/g))} {(-e)} {(DQ (s/QQQQQ/Z5000/g))} {(-e)} {(DQ (s/QQQQ/Z4000/g))} {(-e)} {(DQ (s/QQQ/Z3000/g))} {(-e)} 
                  {(DQ (s/QQ/Z2000/g))} {(-e)} {(DQ (s/Q/Z1000/g))} {(-e)} {(DQ (s/) ($ VSub_Name "$z100") (/Q/g))} {(-e)} 
                  {(DQ (s/QQQQQQQQQ/Z900/g))} {(-e)} {(DQ (s/QQQQQQQQ/Z800/g))} {(-e)} {(DQ (s/QQQQQQQ/Z700/g))} {(-e)} {(DQ (s/QQQQQQ/Z600/g))} {(-e)} 
                  {(DQ (s/QQQQQ/Z500/g))} {(-e)} {(DQ (s/QQQQ/Z400/g))} {(-e)} {(DQ (s/QQQ/Z300/g))} {(-e)} {(DQ (s/QQ/Z200/g))} {(-e)} 
                  {(DQ (s/Q/Z100/g))} {(-e)} {(DQ (s/000Z//g))} {(-e)} {(DQ (s/) ($ VSub_Name "$z10") (/Q/g))} {(-e)} {(DQ (s/QQQQQQQQQ/Z90/g))} 
                  {(-e)} {(DQ (s/QQQQQQQQ/Z80/g))} {(-e)} {(DQ (s/QQQQQQQ/Z70/g))} {(-e)} {(DQ (s/QQQQQQ/Z60/g))} {(-e)} 
                  {(DQ (s/QQQQQ/Z50/g))} {(-e)} {(DQ (s/QQQQ/Z40/g))} {(-e)} {(DQ (s/QQQ/Z30/g))} {(-e)} {(DQ (s/QQ/Z20/g))} {(-e)} {(DQ (s/Q/Z10/g))} 
                  {(-e)} {(DQ (s/00Z//g))} {(-e)} {(DQ (s/z/Q/g))} {(-e)} {(DQ (s/QQQQQQQQQ/Z9/g))} {(-e)} {(DQ (s/QQQQQQQQ/Z8/g))} 
                  {(-e)} {(DQ (s/QQQQQQQ/Z7/g))} {(-e)} {(DQ (s/QQQQQQ/Z6/g))} {(-e)} {(DQ (s/QQQQQ/Z5/g))} {(-e)} 
                  {(DQ (s/QQQQ/Z4/g))} {(-e)} {(DQ (s/QQQ/Z3/g))} {(-e)} {(DQ (s/QQ/Z2/g))} {(-e)} {(DQ (s/Q/Z1/g))} {(-e)} {(DQ (s/0Z//g))}
                )
              terminator: <Op_Semi ";">
            )
          ]
          spids: [314]
        )
      spids: [309 313]
    )
    (FuncDef
      name: expect_pattern
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cnt)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$1"))}
                  spids: [690]
                )
              ]
              spids: [690]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: -1
                  body: 
                    {
                      (DQ ("diff --git a/file-a") ($ VSub_Name "$cnt") (" b/file-a") 
                        ($ VSub_Name "$cnt") ("\n") ("--- a/file-a") ($ VSub_Name "$cnt") ("\n") ("+++ b/file-a") ($ VSub_Name "$cnt") ("\n") 
                        ("@@ -1 +1 @@\n") (-Z) (${ VSub_Name cnt) ("a\n") ("+Z") (${ VSub_Name cnt) ("A\n") ("diff --git a/file-b") 
                        ($ VSub_Name "$cnt") (" b/file-b") ($ VSub_Name "$cnt") ("\n") ("--- a/file-b") ($ VSub_Name "$cnt") ("\n") ("+++ b/file-b") 
                        ($ VSub_Name "$cnt") ("\n") ("@@ -1 +1 @@\n") ("-b\n") ("+B\n") ("diff --git a/file-c") ($ VSub_Name "$cnt") (" b/file-c") 
                        ($ VSub_Name "$cnt") ("\n") ("--- a/file-c") ($ VSub_Name "$cnt") ("\n") ("+++ b/file-c") ($ VSub_Name "$cnt") ("\n") 
                        ("@@ -1 +1 @@\n") (-cZ) ($ VSub_Name "$cnt") ("\n") (EscapedLiteralPart token:<Lit_EscapedChar "\\ ">) 
                        ("No newline at end of file\n") ("+CZ") ($ VSub_Name "$cnt") ("\n") (EscapedLiteralPart token:<Lit_EscapedChar "\\ ">) 
                        ("No newline at end of file\n") ("diff --git a/file-d") ($ VSub_Name "$cnt") (" b/file-d") ($ VSub_Name "$cnt") ("\n") ("--- a/file-d") 
                        ($ VSub_Name "$cnt") ("\n") ("+++ b/file-d") ($ VSub_Name "$cnt") ("\n") ("@@ -1 +1 @@\n") ("-d\n") ("+D\n")
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: True
                  spids: [698]
                )
              ]
            )
          ]
          spids: [687]
        )
      spids: [682 686]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:sample)
          op: Equal
          rhs: {(SQ <"1023 1024 1025 2047 4095">)}
          spids: [776]
        )
      ]
      spids: [776]
    )
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ <"\n"> <"\n"> <"\tfor n in $sample\n"> <"\tdo\n"> <"\t\t( zs $n ; echo a ) >file-a$n &&\n"> 
          <"\t\t( echo b; zs $n; echo ) >file-b$n &&\n"> <"\t\t( printf c; zs $n ) >file-c$n &&\n"> <"\t\t( echo d; zs $n ) >file-d$n &&\n"> <"\n"> 
          <"\t\tgit add file-a$n file-b$n file-c$n file-d$n &&\n"> <"\n"> <"\t\t( zs $n ; echo A ) >file-a$n &&\n"> <"\t\t( echo B; zs $n; echo ) >file-b$n &&\n"> 
          <"\t\t( printf C; zs $n ) >file-c$n &&\n"> <"\t\t( echo D; zs $n ) >file-d$n &&\n"> <"\n"> <"\t\texpect_pattern $n || return 1\n"> <"\n"> 
          <"\tdone >expect\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"diff -U0">)} 
      {
        (SQ <"\n"> <"\n"> <"\tfor n in $sample\n"> <"\tdo\n"> <"\t\tgit diff -U0 file-?$n\n"> 
          <"\tdone | zc >actual &&\n"> <"\ttest_cmp expect actual\n"> <"\n">
        )
      }
    )
    (C {(test_done)})
  ]
)