(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"check output directory names used by git-clone">)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ <"setup ssh wrapper">)} 
      {
        (SQ <"\n"> <"\twrite_script \"$TRASH_DIRECTORY/ssh-wrapper\" <<-\\EOF &&\n"> 
          <"\tgit upload-pack \"$TRASH_DIRECTORY\"\n"> <"\tEOF\n"> <"\tGIT_SSH=\"$TRASH_DIRECTORY/ssh-wrapper\" &&\n"> <"\texport GIT_SSH &&\n"> 
          <"\texport TRASH_DIRECTORY\n">
        )
      }
    )
    (FuncDef
      name: test_clone_dir
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:url)
                      op: Equal
                      rhs: {($ VSub_Number "$1")}
                      spids: [51]
                    )
                  ]
                  spids: [51]
                )
              terminator: <Op_Semi ";">
            )
            (C {(shift)})
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:dir)
                      op: Equal
                      rhs: {($ VSub_Number "$1")}
                      spids: [58]
                    )
                  ]
                  spids: [58]
                )
              terminator: <Op_Semi ";">
            )
            (C {(shift)})
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:expect) op:Equal rhs:{(success)} spids:[65])]
              spids: [65]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:bare) op:Equal rhs:{(non-bare)} spids:[69])]
              spids: [69]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:clone_opts) op:Equal rhs:{(SQ )} spids:[73])]
              spids: [73]
            )
            (ForEach
              iter_name: i
              iter_words: [{(DQ ($ VSub_At "$@"))}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (Case
                      to_match: {(DQ ($ VSub_Name "$i"))}
                      arms: [
                        (case_arm
                          pat_list: [{(fail)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:expect)
                                  op: Equal
                                  rhs: {(failure)}
                                  spids: [103]
                                )
                              ]
                              spids: [103]
                            )
                          ]
                          spids: [99 100 107 -1]
                        )
                        (case_arm
                          pat_list: [{(bare)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:bare)
                                  op: Equal
                                  rhs: {(bare)}
                                  spids: [114]
                                )
                              ]
                              spids: [114]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:clone_opts)
                                  op: Equal
                                  rhs: {(--bare)}
                                  spids: [118]
                                )
                              ]
                              spids: [118]
                            )
                          ]
                          spids: [110 111 122 -1]
                        )
                      ]
                      spids: [90 96 125]
                    )
                  ]
                  spids: [87 128]
                )
              spids: [81 -1]
            )
            (C {(test_expect_) ($ VSub_Name "$expect")} 
              {
                (DQ ("clone of ") ($ VSub_Name "$url") (" goes to ") ($ VSub_Name "$dir") (" (") 
                  ($ VSub_Name "$bare") (")")
                )
              } 
              {
                (DQ ("\n") ("\t\trm -rf ") ($ VSub_Name "$dir") (" &&\n") ("\t\tgit clone ") 
                  ($ VSub_Name "$clone_opts") (" ") ($ VSub_Name "$url") (" &&\n") ("\t\ttest_path_is_dir ") ($ VSub_Name "$dir") ("\n") ("\t")
                )
              }
            )
          ]
          spids: [48]
        )
      spids: [43 47]
    )
    (C {(test_clone_dir)} {(host) (Lit_Other ":") (foo)} {(foo)})
    (C {(test_clone_dir)} {(host) (Lit_Other ":") (foo)} {(foo.git)} {(bare)})
    (C {(test_clone_dir)} {(host) (Lit_Other ":") (foo.git)} {(foo)})
    (C {(test_clone_dir)} {(host) (Lit_Other ":") (foo.git)} {(foo.git)} {(bare)})
    (C {(test_clone_dir)} {(host) (Lit_Other ":") (foo/.git)} {(foo)})
    (C {(test_clone_dir)} {(host) (Lit_Other ":") (foo/.git)} {(foo.git)} {(bare)})
    (C {(test_clone_dir)} {(ssh) (Lit_Other ":") (//host/foo)} {(foo)})
    (C {(test_clone_dir)} {(ssh) (Lit_Other ":") (//host/foo)} {(foo.git)} {(bare)})
    (C {(test_clone_dir)} {(ssh) (Lit_Other ":") (//host/foo.git)} {(foo)})
    (C {(test_clone_dir)} {(ssh) (Lit_Other ":") (//host/foo.git)} {(foo.git)} {(bare)})
    (C {(test_clone_dir)} {(ssh) (Lit_Other ":") (//host/foo/.git)} {(foo)})
    (C {(test_clone_dir)} {(ssh) (Lit_Other ":") (//host/foo/.git)} {(foo.git)} {(bare)})
    (C {(test_clone_dir)} {(ssh) (Lit_Other ":") (//host/foo/)} {(foo)})
    (C {(test_clone_dir)} {(ssh) (Lit_Other ":") (//host/foo///)} {(foo)})
    (C {(test_clone_dir)} {(ssh) (Lit_Other ":") (//host/foo/.git/)} {(foo)})
    (C {(test_clone_dir)} {(ssh) (Lit_Other ":") (//host/foo.git/)} {(foo)})
    (C {(test_clone_dir)} {(ssh) (Lit_Other ":") (//host/foo.git///)} {(foo)})
    (C {(test_clone_dir)} {(ssh) (Lit_Other ":") (//host/foo///.git/)} {(foo)})
    (C {(test_clone_dir)} {(ssh) (Lit_Other ":") (//host/foo/.git///)} {(foo)})
    (C {(test_clone_dir)} {(host) (Lit_Other ":") (foo/)} {(foo)})
    (C {(test_clone_dir)} {(host) (Lit_Other ":") (foo///)} {(foo)})
    (C {(test_clone_dir)} {(host) (Lit_Other ":") (foo.git/)} {(foo)})
    (C {(test_clone_dir)} {(host) (Lit_Other ":") (foo/.git/)} {(foo)})
    (C {(test_clone_dir)} {(host) (Lit_Other ":") (foo.git///)} {(foo)})
    (C {(test_clone_dir)} {(host) (Lit_Other ":") (foo///.git/)} {(foo)})
    (C {(test_clone_dir)} {(host) (Lit_Other ":") (foo/.git///)} {(foo)})
    (C {(test_clone_dir)} {(ssh) (Lit_Other ":") (//host/)} {(host)})
    (C {(test_clone_dir)} {(ssh) (Lit_Other ":") (//host) (Lit_Other ":") (1234/)} {(host)})
    (C {(test_clone_dir)} {(ssh) (Lit_Other ":") (//user) (Lit_Other "@") (host/)} {(host)})
    (C {(test_clone_dir)} {(host) (Lit_Other ":") (/)} {(host)})
    (C {(test_clone_dir)} 
      {(ssh) (Lit_Other ":") (//user) (Lit_Other ":") (password) (Lit_Other "@") (host/)} {(host)}
    )
    (C {(test_clone_dir)} 
      {(ssh) (Lit_Other ":") (//user) (Lit_Other ":") (password) (Lit_Other "@") (host) (Lit_Other ":") 
        (1234/)
      } {(host)}
    )
    (C {(test_clone_dir)} 
      {(ssh) (Lit_Other ":") (//user) (Lit_Other ":") (passw) (Lit_Other "@") (rd) (Lit_Other "@") (host) 
        (Lit_Other ":") (1234/)
      } {(host)}
    )
    (C {(test_clone_dir)} {(user) (Lit_Other "@") (host) (Lit_Other ":") (/)} {(host)})
    (C {(test_clone_dir)} 
      {(user) (Lit_Other ":") (password) (Lit_Other "@") (host) (Lit_Other ":") (/)} {(host)}
    )
    (C {(test_clone_dir)} 
      {(user) (Lit_Other ":") (passw) (Lit_Other "@") (rd) (Lit_Other "@") (host) (Lit_Other ":") (/)} {(host)}
    )
    (C {(test_clone_dir)} {(ssh) (Lit_Other ":") (//host/foo) (Lit_Other "@") (bar)} 
      {(foo) (Lit_Other "@") (bar)}
    )
    (C {(test_clone_dir)} {(ssh) (Lit_Other ":") (//host/foo) (Lit_Other "@") (bar.git)} 
      {(foo) (Lit_Other "@") (bar)}
    )
    (C {(test_clone_dir)} 
      {(ssh) (Lit_Other ":") (//user) (Lit_Other ":") (password) (Lit_Other "@") (host/foo) 
        (Lit_Other "@") (bar)
      } {(foo) (Lit_Other "@") (bar)}
    )
    (C {(test_clone_dir)} 
      {(ssh) (Lit_Other ":") (//user) (Lit_Other ":") (passw) (Lit_Other "@") (rd) (Lit_Other "@") 
        (host/foo) (Lit_Other "@") (bar.git)
      } {(foo) (Lit_Other "@") (bar)}
    )
    (C {(test_clone_dir)} {(host) (Lit_Other ":") (/foo) (Lit_Other "@") (bar)} 
      {(foo) (Lit_Other "@") (bar)}
    )
    (C {(test_clone_dir)} {(host) (Lit_Other ":") (/foo) (Lit_Other "@") (bar.git)} 
      {(foo) (Lit_Other "@") (bar)}
    )
    (C {(test_clone_dir)} 
      {(user) (Lit_Other ":") (password) (Lit_Other "@") (host) (Lit_Other ":") (/foo) (Lit_Other "@") 
        (bar)
      } {(foo) (Lit_Other "@") (bar)}
    )
    (C {(test_clone_dir)} 
      {(user) (Lit_Other ":") (passw) (Lit_Other "@") (rd) (Lit_Other "@") (host) (Lit_Other ":") (/foo) 
        (Lit_Other "@") (bar.git)
      } {(foo) (Lit_Other "@") (bar)}
    )
    (C {(test_clone_dir)} 
      {(ssh) (Lit_Other ":") (//user) (Lit_Other ":") (password) (Lit_Other "@") (host/test) 
        (Lit_Other ":") (1234)
      } {(1234)}
    )
    (C {(test_clone_dir)} 
      {(ssh) (Lit_Other ":") (//user) (Lit_Other ":") (password) (Lit_Other "@") (host/test) 
        (Lit_Other ":") (1234.git)
      } {(1234)}
    )
    (C {(test_done)})
  ]
)