(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:'git status with certain file name lengths' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:files)
          op: assign_op.Equal
          rhs: {(DQ ('0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z'))}
          spids: [15]
        )
      ]
    )
    (command.ShFunction
      name: check
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:len)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [28]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:prefix)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$2')}
                  spids: [32]
                )
              ]
            )
            (command.ForEach
              iter_name: i
              iter_words: [{($ Id.VSub_DollarName '$files')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Simple
                      words: [{(Id.Lit_Other ':')}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:51)
                          fd: -1
                          arg_word: {($ Id.VSub_DollarName '$prefix') ($ Id.VSub_DollarName '$i')}
                        )
                      ]
                    )
                  ]
                )
            )
            (C {(test_expect_success)} {(DQ ('status, filename length ') ($ Id.VSub_DollarName '$len'))} 
              {
                (DQ ('\n') ('\t\tgit add ') ($ Id.VSub_DollarName '$prefix') ('* &&\n') 
                  ('\t\tgit status\n') ('\t')
                )
              }
            )
            (C {(rm)} {($ Id.VSub_DollarName '$prefix') (Id.Lit_Star '*')} {(.git/index)})
          ]
        )
    )
    (C {(check)} {(1)})
    (C {(check)} {(2)} {(p)})
    (C {(check)} {(3)} {(px)})
    (C {(check)} {(4)} {(pre)})
    (C {(check)} {(5)} {(pref)})
    (C {(check)} {(6)} {(prefi)})
    (C {(check)} {(7)} {(prefix)})
    (C {(check)} {(8)} {(prefix-)})
    (C {(check)} {(9)} {(prefix-p)})
    (C {(check)} {(10)} {(prefix-pr)})
    (C {(check)} {(11)} {(prefix-pre)})
    (C {(check)} {(12)} {(prefix-pref)})
    (C {(check)} {(13)} {(prefix-prefi)})
    (C {(check)} {(14)} {(prefix-prefix)})
    (C {(check)} {(15)} {(prefix-prefix-)})
    (C {(check)} {(16)} {(prefix-prefix-p)})
    (C {(check)} {(17)} {(prefix-prefix-pr)})
    (C {(check)} {(18)} {(prefix-prefix-pre)})
    (C {(check)} {(19)} {(prefix-prefix-pref)})
    (C {(check)} {(20)} {(prefix-prefix-prefi)})
    (C {(check)} {(21)} {(prefix-prefix-prefix)})
    (C {(check)} {(22)} {(prefix-prefix-prefix-)})
    (C {(check)} {(23)} {(prefix-prefix-prefix-p)})
    (C {(check)} {(24)} {(prefix-prefix-prefix-pr)})
    (C {(test_done)})
  ]
)