(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description spids:[4])
          op: Equal
          rhs: {(SQ <'test GIT_CEILING_DIRECTORIES'>)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (FuncDef
      name: test_prefix
      body: 
        (BraceGroup
          children: [
            (C {(test_expect_success)} {(DQ ($ VSub_Number '$1'))} 
              {
                (DQ ("test '") ($ VSub_Number '$2') ("' = ") 
                  (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('(git rev-parse --show-prefix)') 
                  (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)
                )
              }
            )
          ]
          spids: [18]
        )
      spids: [14 17]
    )
    (FuncDef
      name: test_fail
      body: 
        (BraceGroup
          children: [
            (C {(test_expect_success)} {(DQ ($ VSub_Number '$1') (': prefix'))} 
              {(SQ <'\n'> <'\t\ttest_expect_code 128 git rev-parse --show-prefix\n'> <'\t'>)}
            )
          ]
          spids: [46]
        )
      spids: [42 45]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:TRASH_ROOT spids:[65])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$PWD'))}
          spids: [65]
        )
      ]
      spids: [65]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ROOT_PARENT spids:[70])
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(dirname)} {(DQ ($ VSub_Name '$TRASH_ROOT'))})]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [71 77]
              )
            }
          spids: [70]
        )
      ]
      spids: [70]
    )
    (C {(unset)} {(GIT_CEILING_DIRECTORIES)})
    (C {(test_prefix)} {(no_ceil)} {(DQ )})
    (C {(export)} {(GIT_CEILING_DIRECTORIES)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[98])
          op: Equal
          rhs: {(DQ )}
          spids: [98]
        )
      ]
      spids: [98]
    )
    (C {(test_prefix)} {(ceil_empty)} {(DQ )})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[110])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$ROOT_PARENT'))}
          spids: [110]
        )
      ]
      spids: [110]
    )
    (C {(test_prefix)} {(ceil_at_parent)} {(DQ )})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[123])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$ROOT_PARENT') (/))}
          spids: [123]
        )
      ]
      spids: [123]
    )
    (C {(test_prefix)} {(ceil_at_parent_slash)} {(DQ )})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[137])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT'))}
          spids: [137]
        )
      ]
      spids: [137]
    )
    (C {(test_prefix)} {(ceil_at_trash)} {(DQ )})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[150])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/))}
          spids: [150]
        )
      ]
      spids: [150]
    )
    (C {(test_prefix)} {(ceil_at_trash_slash)} {(DQ )})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[164])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/sub))}
          spids: [164]
        )
      ]
      spids: [164]
    )
    (C {(test_prefix)} {(ceil_at_sub)} {(DQ )})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[178])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/sub/))}
          spids: [178]
        )
      ]
      spids: [178]
    )
    (C {(test_prefix)} {(ceil_at_sub_slash)} {(DQ )})
    (If
      arms: [
        (if_arm
          cond: [(C {(test_have_prereq)} {(SYMLINKS)})]
          action: [(C {(ln)} {(-s)} {(sub)} {(top)})]
          spids: [16777215 198]
        )
      ]
      spids: [16777215 209]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(mkdir)} {(-p)} {(sub/dir)})
        (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [(C {(cd)} {(sub/dir)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})]
    )
    (C {(unset)} {(GIT_CEILING_DIRECTORIES)})
    (C {(test_prefix)} {(subdir_no_ceil)} {(DQ (sub/dir/))})
    (C {(export)} {(GIT_CEILING_DIRECTORIES)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[253])
          op: Equal
          rhs: {(DQ )}
          spids: [253]
        )
      ]
      spids: [253]
    )
    (C {(test_prefix)} {(subdir_ceil_empty)} {(DQ (sub/dir/))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[266])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT'))}
          spids: [266]
        )
      ]
      spids: [266]
    )
    (C {(test_fail)} {(subdir_ceil_at_trash)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[276])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/))}
          spids: [276]
        )
      ]
      spids: [276]
    )
    (C {(test_fail)} {(subdir_ceil_at_trash_slash)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[287])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/sub))}
          spids: [287]
        )
      ]
      spids: [287]
    )
    (C {(test_fail)} {(subdir_ceil_at_sub)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[298])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/sub/))}
          spids: [298]
        )
      ]
      spids: [298]
    )
    (C {(test_fail)} {(subdir_ceil_at_sub_slash)})
    (If
      arms: [
        (if_arm
          cond: [(C {(test_have_prereq)} {(SYMLINKS)})]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[318])
                  op: Equal
                  rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/top))}
                  spids: [318]
                )
              ]
              spids: [318]
            )
            (C {(test_fail)} {(subdir_ceil_at_top)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[330])
                  op: Equal
                  rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/top/))}
                  spids: [330]
                )
              ]
              spids: [330]
            )
            (C {(test_fail)} {(subdir_ceil_at_top_slash)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[343])
                  op: Equal
                  rhs: {(DQ (':') ($ VSub_Name '$TRASH_ROOT') (/top))}
                  spids: [343]
                )
              ]
              spids: [343]
            )
            (C {(test_prefix)} {(subdir_ceil_at_top_no_resolve)} {(DQ (sub/dir/))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[360])
                  op: Equal
                  rhs: {(DQ (':') ($ VSub_Name '$TRASH_ROOT') (/top/))}
                  spids: [360]
                )
              ]
              spids: [360]
            )
            (C {(test_prefix)} {(subdir_ceil_at_top_slash_no_resolve)} {(DQ (sub/dir/))})
          ]
          spids: [16777215 315]
        )
      ]
      spids: [16777215 376]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[379])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/sub/dir))}
          spids: [379]
        )
      ]
      spids: [379]
    )
    (C {(test_prefix)} {(subdir_ceil_at_subdir)} {(DQ (sub/dir/))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[394])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/sub/dir/))}
          spids: [394]
        )
      ]
      spids: [394]
    )
    (C {(test_prefix)} {(subdir_ceil_at_subdir_slash)} {(DQ (sub/dir/))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[410])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/su))}
          spids: [410]
        )
      ]
      spids: [410]
    )
    (C {(test_prefix)} {(subdir_ceil_at_su)} {(DQ (sub/dir/))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[425])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/su/))}
          spids: [425]
        )
      ]
      spids: [425]
    )
    (C {(test_prefix)} {(subdir_ceil_at_su_slash)} {(DQ (sub/dir/))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[440])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/sub/di))}
          spids: [440]
        )
      ]
      spids: [440]
    )
    (C {(test_prefix)} {(subdir_ceil_at_sub_di)} {(DQ (sub/dir/))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[455])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/sub/di))}
          spids: [455]
        )
      ]
      spids: [455]
    )
    (C {(test_prefix)} {(subdir_ceil_at_sub_di_slash)} {(DQ (sub/dir/))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[470])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/subdi))}
          spids: [470]
        )
      ]
      spids: [470]
    )
    (C {(test_prefix)} {(subdir_ceil_at_subdi)} {(DQ (sub/dir/))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[485])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/subdi))}
          spids: [485]
        )
      ]
      spids: [485]
    )
    (C {(test_prefix)} {(subdir_ceil_at_subdi_slash)} {(DQ (sub/dir/))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[501])
          op: Equal
          rhs: {(DQ ('/foo:') ($ VSub_Name '$TRASH_ROOT') (/sub))}
          spids: [501]
        )
      ]
      spids: [501]
    )
    (C {(test_fail)} {(second_of_two)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[513])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') ('/sub:/bar'))}
          spids: [513]
        )
      ]
      spids: [513]
    )
    (C {(test_fail)} {(first_of_two)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[524])
          op: Equal
          rhs: {(DQ ('/foo:') ($ VSub_Name '$TRASH_ROOT') ('/sub:/bar'))}
          spids: [524]
        )
      ]
      spids: [524]
    )
    (C {(test_fail)} {(second_of_three)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[537])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/sub))}
          spids: [537]
        )
      ]
      spids: [537]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_DIR spids:[543])
          op: Equal
          rhs: {(../../.git)}
          spids: [543]
        )
      ]
      spids: [543]
    )
    (C {(export)} {(GIT_DIR)})
    (C {(test_prefix)} {(git_dir_specified)} {(DQ )})
    (C {(unset)} {(GIT_DIR)})
    (AndOr
      ops: [Op_DPipe]
      children: [(C {(cd)} {(../..)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [(C {(mkdir)} {(-p)} {(s/d)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [(C {(cd)} {(s/d)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})]
    )
    (C {(unset)} {(GIT_CEILING_DIRECTORIES)})
    (C {(test_prefix)} {(sd_no_ceil)} {(DQ (s/d/))})
    (C {(export)} {(GIT_CEILING_DIRECTORIES)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[614])
          op: Equal
          rhs: {(DQ )}
          spids: [614]
        )
      ]
      spids: [614]
    )
    (C {(test_prefix)} {(sd_ceil_empty)} {(DQ (s/d/))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[627])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT'))}
          spids: [627]
        )
      ]
      spids: [627]
    )
    (C {(test_fail)} {(sd_ceil_at_trash)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[637])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/))}
          spids: [637]
        )
      ]
      spids: [637]
    )
    (C {(test_fail)} {(sd_ceil_at_trash_slash)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[648])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/s))}
          spids: [648]
        )
      ]
      spids: [648]
    )
    (C {(test_fail)} {(sd_ceil_at_s)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[659])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/s/))}
          spids: [659]
        )
      ]
      spids: [659]
    )
    (C {(test_fail)} {(sd_ceil_at_s_slash)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[670])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/s/d))}
          spids: [670]
        )
      ]
      spids: [670]
    )
    (C {(test_prefix)} {(sd_ceil_at_sd)} {(DQ (s/d/))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[685])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/s/d/))}
          spids: [685]
        )
      ]
      spids: [685]
    )
    (C {(test_prefix)} {(sd_ceil_at_sd_slash)} {(DQ (s/d/))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[701])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/su))}
          spids: [701]
        )
      ]
      spids: [701]
    )
    (C {(test_prefix)} {(sd_ceil_at_su)} {(DQ (s/d/))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[716])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/su/))}
          spids: [716]
        )
      ]
      spids: [716]
    )
    (C {(test_prefix)} {(sd_ceil_at_su_slash)} {(DQ (s/d/))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[731])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/s/di))}
          spids: [731]
        )
      ]
      spids: [731]
    )
    (C {(test_prefix)} {(sd_ceil_at_s_di)} {(DQ (s/d/))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[746])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/s/di))}
          spids: [746]
        )
      ]
      spids: [746]
    )
    (C {(test_prefix)} {(sd_ceil_at_s_di_slash)} {(DQ (s/d/))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[761])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/sdi))}
          spids: [761]
        )
      ]
      spids: [761]
    )
    (C {(test_prefix)} {(sd_ceil_at_sdi)} {(DQ (s/d/))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_CEILING_DIRECTORIES spids:[776])
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_ROOT') (/sdi))}
          spids: [776]
        )
      ]
      spids: [776]
    )
    (C {(test_prefix)} {(sd_ceil_at_sdi_slash)} {(DQ (s/d/))})
    (C {(test_done)})
  ]
)