(command.CommandList
  children: [
    (command.ShFunction
      name_tok: <test_proto>
      name: test_proto
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'desc='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'desc='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'proto='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'proto='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'proto='> name:proto)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 2)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'url='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'url='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'url='> name:url)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 3)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <test_expect_success>
              more_env: []
              words: [
                {<test_expect_success>}
                {(DQ <'clone '> ($ Id.VSub_Number 1) <' (enabled)'>)}
                {
                  (SQ <'\n'> <'\t\trm -rf tmp.git &&\n'> <'\t\t(\n'> 
                    <'\t\t\tGIT_ALLOW_PROTOCOL=$proto &&\n'> <'\t\t\texport GIT_ALLOW_PROTOCOL &&\n'> <'\t\t\tgit clone --bare "$url" tmp.git\n'> <'\t\t)\n'> <'\t'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <test_expect_success>
              more_env: []
              words: [
                {<test_expect_success>}
                {(DQ <'fetch '> ($ Id.VSub_Number 1) <' (enabled)'>)}
                {
                  (SQ <'\n'> <'\t\t(\n'> <'\t\t\tcd tmp.git &&\n'> 
                    <'\t\t\tGIT_ALLOW_PROTOCOL=$proto &&\n'> <'\t\t\texport GIT_ALLOW_PROTOCOL &&\n'> <'\t\t\tgit fetch\n'> <'\t\t)\n'> <'\t'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <test_expect_success>
              more_env: []
              words: [
                {<test_expect_success>}
                {(DQ <'push '> ($ Id.VSub_Number 1) <' (enabled)'>)}
                {
                  (SQ <'\n'> <'\t\t(\n'> <'\t\t\tcd tmp.git &&\n'> 
                    <'\t\t\tGIT_ALLOW_PROTOCOL=$proto &&\n'> <'\t\t\texport GIT_ALLOW_PROTOCOL &&\n'> <'\t\t\tgit push origin HEAD:pushed\n'> <'\t\t)\n'> <'\t'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <test_expect_success>
              more_env: []
              words: [
                {<test_expect_success>}
                {(DQ <'push '> ($ Id.VSub_Number 1) <' (disabled)'>)}
                {
                  (SQ <'\n'> <'\t\t(\n'> <'\t\t\tcd tmp.git &&\n'> 
                    <'\t\t\tGIT_ALLOW_PROTOCOL=none &&\n'> <'\t\t\texport GIT_ALLOW_PROTOCOL &&\n'> <'\t\t\ttest_must_fail git push origin HEAD:pushed\n'> 
                    <'\t\t)\n'> <'\t'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <test_expect_success>
              more_env: []
              words: [
                {<test_expect_success>}
                {(DQ <'fetch '> ($ Id.VSub_Number 1) <' (disabled)'>)}
                {
                  (SQ <'\n'> <'\t\t(\n'> <'\t\t\tcd tmp.git &&\n'> 
                    <'\t\t\tGIT_ALLOW_PROTOCOL=none &&\n'> <'\t\t\texport GIT_ALLOW_PROTOCOL &&\n'> <'\t\t\ttest_must_fail git fetch\n'> <'\t\t)\n'> <'\t'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <test_expect_success>
              more_env: []
              words: [
                {<test_expect_success>}
                {(DQ <'clone '> ($ Id.VSub_Number 1) <' (disabled)'>)}
                {
                  (SQ <'\n'> <'\t\trm -rf tmp.git &&\n'> <'\t\t(\n'> 
                    <'\t\t\tGIT_ALLOW_PROTOCOL=none &&\n'> <'\t\t\texport GIT_ALLOW_PROTOCOL &&\n'> <'\t\t\ttest_must_fail git clone --bare "$url" tmp.git\n'> 
                    <'\t\t)\n'> <'\t'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <setup_ssh_wrapper>
      name: setup_ssh_wrapper
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <test_expect_success>
              more_env: []
              words: [
                {<test_expect_success>}
                {(SQ <'setup ssh wrapper'>)}
                {
                  (SQ <'\n'> <'\t\twrite_script ssh-wrapper <<-\\EOF &&\n'> 
                    <'\t\techo >&2 "ssh: $*"\n'> <'\t\thost=$1; shift\n'> <'\t\tcd "$TRASH_DIRECTORY/$host" &&\n'> <'\t\teval "$*"\n'> <'\t\tEOF\n'> 
                    <'\t\tGIT_SSH="$PWD/ssh-wrapper" &&\n'> <'\t\texport GIT_SSH &&\n'> <'\t\texport TRASH_DIRECTORY\n'> <'\t'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <setup_ext_wrapper>
      name: setup_ext_wrapper
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <test_expect_success>
              more_env: []
              words: [
                {<test_expect_success>}
                {(SQ <'setup ext wrapper'>)}
                {
                  (SQ <'\n'> <'\t\twrite_script fake-remote <<-\\EOF &&\n'> 
                    <'\t\techo >&2 "fake-remote: $*"\n'> <'\t\tcd "$TRASH_DIRECTORY/remote" &&\n'> <'\t\teval "$*"\n'> <'\t\tEOF\n'> 
                    <'\t\tPATH=$TRASH_DIRECTORY:$PATH &&\n'> <'\t\texport TRASH_DIRECTORY\n'> <'\t'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
  ]
)