(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'test_description='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'test_description='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test_description='> name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'log family learns --stdin'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {<'./test-lib.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.ShFunction
      name_tok: <check>
      name: check
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [cmd]
              iterable: (for_iter.Words words:[{<rev-list>} {(DQ <'log --stat'>)}])
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.AndOr
                      children: [
                        (command.ForEach
                          keyword: <Id.KW_For for>
                          iter_names: [i]
                          iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '@'))}])
                          body: 
                            (command.DoGroup
                              left: <Id.KW_Do do>
                              children: [
                                (command.Simple
                                  blame_tok: <printf>
                                  more_env: []
                                  words: [
                                    {<printf>}
                                    {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)}
                                    {($ Id.VSub_DollarName i)}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              right: <Id.KW_Done done>
                            )
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<input>}
                            )
                          ]
                        )
                        (command.Simple
                          blame_tok: <test_expect_success>
                          more_env: []
                          words: [
                            {<test_expect_success>}
                            {(DQ <'check '> ($ Id.VSub_DollarName cmd) <' '> ($ Id.VSub_Star '*'))}
                            {
                              (SQ <'\n'> <'\t\t\tgit $cmd $(cat input) >expect &&\n'> 
                                <'\t\t\tgit $cmd --stdin <input >actual &&\n'> <'\t\t\tsed -e "s/^/input /" input &&\n'> <'\t\t\tsed -e "s/^/output /" expect &&\n'> 
                                <'\t\t\ttest_cmp expect actual\n'> <'\t\t'>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'them='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'them='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'them='> name:them)
          op: assign_op.Equal
          rhs: {(SQ <'1 2 3 4 5 6 7'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {<setup>}
        {
          (SQ <'\n'> <'\t(\n'> <'\t\tfor i in 0 $them\n'> <'\t\tdo\n'> <'\t\t\tfor j in $them\n'> 
            <'\t\t\tdo\n'> <'\t\t\t\techo $i.$j >file-$j &&\n'> <'\t\t\t\tgit add file-$j || exit\n'> <'\t\t\tdone &&\n'> 
            <'\t\t\ttest_tick &&\n'> <'\t\t\tgit commit -m $i || exit\n'> <'\t\tdone &&\n'> <'\t\tfor i in $them\n'> <'\t\tdo\n'> 
            <'\t\t\tgit checkout -b side-$i master~$i &&\n'> <'\t\t\techo updated $i >file-$i &&\n'> <'\t\t\tgit add file-$i &&\n'> <'\t\t\ttest_tick &&\n'> 
            <'\t\t\tgit commit -m side-$i || exit\n'> <'\t\tdone\n'> <'\t)\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <check>
      more_env: []
      words: [{<check>} {<master>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <check>
      more_env: []
      words: [{<check>} {<side-1>} {<Id.Lit_Other '^'> <side-4>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <check>
      more_env: []
      words: [{<check>} {<side-1>} {<Id.Lit_Other '^'> <side-7>} {<-->}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <check>
      more_env: []
      words: [{<check>} {<side-1>} {<Id.Lit_Other '^'> <side-7>} {<-->} {<file-1>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <check>
      more_env: []
      words: [{<check>} {<side-1>} {<Id.Lit_Other '^'> <side-7>} {<-->} {<file-2>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <check>
      more_env: []
      words: [{<check>} {<side-3>} {<Id.Lit_Other '^'> <side-4>} {<-->} {<file-3>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <check>
      more_env: []
      words: [{<check>} {<side-3>} {<Id.Lit_Other '^'> <side-2>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <check>
      more_env: []
      words: [{<check>} {<side-3>} {<Id.Lit_Other '^'> <side-2>} {<-->} {<file-1>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'not only --stdin'>)}
        {
          (SQ <'\n'> <'\tcat >expect <<-EOF &&\n'> <'\t7\n'> <'\n'> <'\tfile-1\n'> <'\tfile-2\n'> 
            <'\tEOF\n'> <'\tcat >input <<-EOF &&\n'> <'\t^master^\n'> <'\t--\n'> <'\tfile-2\n'> <'\tEOF\n'> 
            <'\tgit log --pretty=tformat:%s --name-only --stdin master -- file-1 \\\n'> <'\t\t<input >actual &&\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_done>
      more_env: []
      words: [{<test_done>}]
      redirects: []
      do_fork: T
    )
  ]
)