(command.CommandList
  children: [
    (C {<test_tristate>} {<GIT_TEST_GIT_DAEMON>})
    (command.If
      arms: [
        (if_arm
          cond: [
            (C {<test>} {(DQ ($ Id.VSub_DollarName '$GIT_TEST_GIT_DAEMON'))} {<Id.Lit_Equals '='>} 
              {<false>}
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:skip_all)
                  op: assign_op.Equal
                  rhs: {(DQ <'git-daemon testing disabled (unset GIT_TEST_GIT_DAEMON to enable)'>)}
                  spids: [71]
                )
              ]
            )
            (C {<test_done>})
          ]
          spids: [56 68]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [(C {<test_have_prereq>} {<Id.KW_Bang '!'> <PIPE>})]
          action: [
            (C {<test_skip_or_die>} {($ Id.VSub_DollarName '$GIT_TEST_GIT_DAEMON')} 
              {(DQ <'file system does not support FIFOs'>)}
            )
          ]
          spids: [82 89]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:LIB_GIT_DAEMON_PORT)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name LIB_GIT_DAEMON_PORT>
                suffix_op: 
                  (suffix_op.Unary
                    op_id: Id.VTest_Hyphen
                    arg_word: 
                      {
                        (braced_var_sub
                          token: <Id.VSub_Name this_test>
                          suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{<t>})
                        )
                      }
                  )
              )
            }
          spids: [103]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:GIT_DAEMON_PID)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [115]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:GIT_DAEMON_DOCUMENT_ROOT_PATH)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$PWD')) <'/repo'>}
          spids: [117]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:GIT_DAEMON_URL)
          op: assign_op.Equal
          rhs: 
            {<git> <Id.Lit_Colon ':'> <'//127.0.0.1'> <Id.Lit_Colon ':'> 
              ($ Id.VSub_DollarName '$LIB_GIT_DAEMON_PORT')
            }
          spids: [123]
        )
      ]
    )
    (command.ShFunction
      name: start_git_daemon
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [(C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$GIT_DAEMON_PID'))})]
                  action: [(C {<error>} {(DQ <'start_git_daemon already called'>)})]
                  spids: [138 149]
                )
              ]
            )
            (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName '$GIT_DAEMON_DOCUMENT_ROOT_PATH'))})
            (C {<trap>} {(SQ <'code=$?; stop_git_daemon; (exit $code); die'>)} {<EXIT>})
            (command.Simple
              words: [{<say>} {(DQ <'Starting git daemon ...'>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
              do_fork: T
            )
            (C {<mkfifo>} {<git_daemon_output>})
            (command.Sentence
              child: 
                (command.Simple
                  words: [
                    {<git>}
                    {<daemon>}
                    {<--listen> <Id.Lit_Equals '='> <127.0.0.1>}
                    {<--port> <Id.Lit_Equals '='> (DQ ($ Id.VSub_DollarName '$LIB_GIT_DAEMON_PORT'))}
                    {<--reuseaddr>}
                    {<--verbose>}
                    {<--base-path> <Id.Lit_Equals '='> 
                      (DQ ($ Id.VSub_DollarName '$GIT_DAEMON_DOCUMENT_ROOT_PATH'))
                    }
                    {(DQ ($ Id.VSub_At '$@'))}
                    {(DQ ($ Id.VSub_DollarName '$GIT_DAEMON_DOCUMENT_ROOT_PATH'))}
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_GreatAnd '>&'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<3>}
                    )
                    (redir
                      op: <Id.Redir_Great '2>'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<git_daemon_output>}
                    )
                  ]
                  do_fork: T
                )
              terminator: <Id.Op_Amp _>
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:GIT_DAEMON_PID)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Bang '$!')}
                  spids: [247]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (BraceGroup
                  children: [
                    (command.Simple
                      words: [{<read>} {<line>}]
                      redirects: [(redir op:<Id.Redir_LessAnd '<&'> loc:(redir_loc.Fd fd:0) arg:{<7>})]
                      do_fork: T
                    )
                    (command.Simple
                      words: [{<echo>} {(DQ ($ Id.VSub_DollarName '$line'))}]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<4>})]
                      do_fork: T
                    )
                    (command.Sentence
                      child: 
                        (command.Simple
                          words: [{<cat>}]
                          redirects: [
                            (redir
                              op: <Id.Redir_LessAnd '<&'>
                              loc: (redir_loc.Fd fd:0)
                              arg: {<7>}
                            )
                            (redir
                              op: <Id.Redir_GreatAnd '>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<4>}
                            )
                          ]
                          do_fork: T
                        )
                      terminator: <Id.Op_Amp _>
                    )
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_Less '7<'>
                      loc: (redir_loc.Fd fd:7)
                      arg: {<git_daemon_output>}
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: [
                        (C {<test>} 
                          {<x> 
                            (DQ 
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (C {<expr>} {(DQ ($ Id.VSub_DollarName '$line'))} {<Id.Lit_Colon ':'>} 
                                    {
                                      (DQ <Id.Lit_Other '\\'> <'[[0-9]*'> <Id.Lit_Other '\\'> <'] '> 
                                        <Id.Lit_Other '\\'> <'(.*'> <Id.Lit_Other '\\'> <')'>
                                      )
                                    }
                                  )
                              )
                            )
                          } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<x> (DQ <'Ready to rumble'>)}
                        )
                      ]
                      action: [
                        (C {<kill>} {(DQ ($ Id.VSub_DollarName '$GIT_DAEMON_PID'))})
                        (C {<wait>} {(DQ ($ Id.VSub_DollarName '$GIT_DAEMON_PID'))})
                        (C {<trap>} {(SQ <die>)} {<EXIT>})
                        (C {<test_skip_or_die>} {($ Id.VSub_DollarName '$GIT_TEST_GIT_DAEMON')} 
                          {(DQ <'git daemon failed to start'>)}
                        )
                      ]
                      spids: [296 333]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: stop_git_daemon
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [(C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$GIT_DAEMON_PID'))})]
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return>)]
                  spids: [382 393]
                )
              ]
            )
            (C {<trap>} {(SQ <die>)} {<EXIT>})
            (command.Simple
              words: [{<say>} {(DQ <'Stopping git daemon ...'>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
              do_fork: T
            )
            (C {<kill>} {(DQ ($ Id.VSub_DollarName '$GIT_DAEMON_PID'))})
            (command.Simple
              words: [{<wait>} {(DQ ($ Id.VSub_DollarName '$GIT_DAEMON_PID'))}]
              redirects: [
                (redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<4>})
              ]
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ret)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [447]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [(C {<test_match_signal>} {<15>} {($ Id.VSub_QMark '$?')})]
                  action: [
                    (C {<error>} 
                      {(DQ <'git daemon exited with status: '> ($ Id.VSub_DollarName '$ret'))}
                    )
                  ]
                  spids: [451 460]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:GIT_DAEMON_PID)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [474]
                )
              ]
            )
            (C {<rm>} {<-f>} {<git_daemon_output>})
          ]
        )
    )
  ]
)