(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:TEST_NO_CREATE_REPO)
          op: Equal
          rhs: {(NoThanks)}
          spids: [16]
        )
      ]
      spids: [16]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:RETRY_TIMEOUT) op:Equal rhs:{(60)} spids:[26])]
      spids: [26]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:P4D_TIMEOUT) op:Equal rhs:{(300)} spids:[36])]
      spids: [36]
    )
    (C {(.)} {(./test-lib.sh)})
    (If
      arms: [
        (if_arm
          cond: [(Pipeline children:[(C {(test_have_prereq)} {(PYTHON)})] negated:True)]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:skip_all)
                  op: Equal
                  rhs: {(SQ <"skipping git p4 tests; python not available">)}
                  spids: [56]
                )
              ]
              spids: [56]
            )
            (C {(test_done)})
          ]
          spids: [-1 53]
        )
      ]
      spids: [-1 64]
    )
    (AndOr
      children: [
        (Subshell
          child: (AndOr children:[(C {(p4)} {(-h)})(C {(p4d)} {(-h)})] op_id:Op_DAmp)
          redirects: [
            (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[80])
            (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[83])
          ]
          spids: [66 78]
        )
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:skip_all)
                  op: Equal
                  rhs: {(SQ <"skipping git p4 tests; no p4 or p4d">)}
                  spids: [91]
                )
              ]
              spids: [91]
            )
            (C {(test_done)})
          ]
          spids: [88]
        )
      ]
      op_id: Op_DPipe
    )
    (FuncDef
      name: native_path
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:path)
                      op: Equal
                      rhs: {(DQ ($ VSub_Number "$1"))}
                      spids: [131]
                    )
                  ]
                  spids: [131]
                )
                (AndOr
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (AndOr
                              children: [
                                (C {(test_have_prereq)} {(CYGWIN)})
                                (Pipeline
                                  children: [(C {(p4)} {(-V)}) (C {(grep)} {(-q)} {(CYGWIN)})]
                                  negated: True
                                )
                              ]
                              op_id: Op_DAmp
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:path)
                                  op: Equal
                                  rhs: 
                                    {
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [
                                              (C {(cygpath)} {(--windows)} {(DQ ($ VSub_Name "$path"))})
                                            ]
                                          )
                                        left_token: <Left_CommandSub "$(">
                                        spids: [166 174]
                                      )
                                    }
                                  spids: [165]
                                )
                              ]
                              spids: [165]
                            )
                          ]
                          spids: [-1 162]
                        )
                      ]
                      else_action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:path)
                              op: Equal
                              rhs: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (C {(test-path-utils)} {(real_path)} 
                                            {(DQ ($ VSub_Name "$path"))}
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub "$(">
                                    spids: [181 189]
                                  )
                                }
                              spids: [180]
                            )
                          ]
                          spids: [180]
                        )
                      ]
                      spids: [177 192]
                    )
                    (C {(echo)} {(DQ ($ VSub_Name "$path"))})
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [128]
        )
      spids: [123 127]
    )
    (FuncDef
      name: time_in_seconds
      body: 
        (BraceGroup
          children: [
            (Subshell
              child: 
                (AndOr
                  children: [
                    (C {(cd)} {(/)})
                    (C {(DQ ($ VSub_Name "$PYTHON_PATH"))} {(-c)} 
                      {(SQ <"import time; print(int(time.time()))">)}
                    )
                  ]
                  op_id: Op_DAmp
                )
              spids: [229 245]
            )
          ]
          spids: [226]
        )
      spids: [221 225]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:testid)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name this_test>
                suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{(t)})
                spids: [266 270]
              )
            }
          spids: [265]
        )
      ]
      spids: [265]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:git_p4_test_start) op:Equal rhs:{(9800)} spids:[272])]
      spids: [272]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:P4DPORT)
          op: Equal
          rhs: 
            {
              (ArithSubPart
                anode: 
                  (ArithBinary
                    op_id: Arith_Plus
                    left: (ArithWord w:{(Lit_Digits 10669)})
                    right: 
                      (ArithBinary
                        op_id: Arith_Minus
                        left: (ArithWord w:{($ VSub_Name "$testid")})
                        right: (ArithWord w:{($ VSub_Name "$git_p4_test_start")})
                      )
                  )
                spids: [276 289]
              )
            }
          spids: [275]
        )
      ]
      spids: [275]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:P4PORT)
          op: Equal
          rhs: {(localhost) (Lit_Other ":") ($ VSub_Name "$P4DPORT")}
          spids: [292]
        )
      ]
      spids: [292]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:P4CLIENT) op:Equal rhs:{(client)} spids:[297])]
      spids: [297]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:P4USER) op:Equal rhs:{(author)} spids:[300])]
      spids: [300]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:P4EDITOR) op:Equal rhs:{(true)} spids:[303])]
      spids: [303]
    )
    (C {(unset)} {(P4CHARSET)})
    (C {(export)} {(P4PORT)} {(P4CLIENT)} {(P4USER)} {(P4EDITOR)} {(P4CHARSET)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:db)
          op: Equal
          rhs: {(DQ ($ VSub_Name "$TRASH_DIRECTORY") (/db))}
          spids: [323]
        )
      ]
      spids: [323]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:cli)
          op: Equal
          rhs: {(DQ ($ VSub_Name "$TRASH_DIRECTORY") (/cli))}
          spids: [329]
        )
      ]
      spids: [329]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:git)
          op: Equal
          rhs: {(DQ ($ VSub_Name "$TRASH_DIRECTORY") (/git))}
          spids: [335]
        )
      ]
      spids: [335]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:pidfile)
          op: Equal
          rhs: {(DQ ($ VSub_Name "$TRASH_DIRECTORY") (/p4d.pid))}
          spids: [341]
        )
      ]
      spids: [341]
    )
    (FuncDef
      name: cleanup
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-f)} {(DQ ($ VSub_Name "$pidfile"))})]
                  action: [
                    (AndOr
                      children: [
                        (SimpleCommand
                          words: [
                            {(kill)}
                            {(-9)}
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(cat)} {(DQ ($ VSub_Name "$pidfile"))})]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [377 383]
                              )
                            }
                          ]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: 2
                              arg_word: {(/dev/null)}
                              spids: [385]
                            )
                          ]
                        )
                        (C {(exit)} {(255)})
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  spids: [-1 370]
                )
              ]
              spids: [-1 395]
            )
          ]
          spids: [356]
        )
      spids: [351 355]
    )
    (C {(trap)} {(cleanup)} {(EXIT)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:TMPDIR)
          op: Equal
          rhs: {(DQ ($ VSub_Name "$TRASH_DIRECTORY"))}
          spids: [415]
        )
      ]
      spids: [415]
    )
    (C {(export)} {(TMPDIR)})
    (FuncDef
      name: start_p4d
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name "$db"))} {(DQ ($ VSub_Name "$cli"))} 
                  {(DQ ($ VSub_Name "$git"))}
                )
                (AndOr
                  children: [
                    (C {(rm)} {(-f)} {(DQ ($ VSub_Name "$pidfile"))})
                    (AndOr
                      children: [
                        (Subshell
                          child: 
                            (AndOr
                              children: [
                                (C {(cd)} {(DQ ($ VSub_Name "$db"))})
                                (BraceGroup
                                  children: [
                                    (Sentence
                                      child: 
                                        (C {(p4d)} {(-q)} {(-p)} {($ VSub_Name "$P4DPORT")} 
                                          {(DQ ($ VSub_At "$@"))}
                                        )
                                      terminator: <Op_Amp "&">
                                    )
                                    (SimpleCommand
                                      words: [{(echo)} {($ VSub_Bang "$!")}]
                                      redirects: [
                                        (Redir
                                          op_id: Redir_Great
                                          fd: -1
                                          arg_word: {(DQ ($ VSub_Name "$pidfile"))}
                                          spids: [497]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [475]
                                )
                              ]
                              op_id: Op_DAmp
                            )
                          spids: [463 506]
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:i)
                              op: Equal
                              rhs: 
                                {
                                  (BracedVarSub
                                    token: <VSub_Name P4D_START_PATIENCE>
                                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(300)})
                                    spids: [533 537]
                                  )
                                }
                              spids: [532]
                            )
                          ]
                          spids: [532]
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:pid)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(cat)} {(DQ ($ VSub_Name "$pidfile"))})]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [541 547]
                      )
                    }
                  spids: [540]
                )
              ]
              spids: [540]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:timeout)
                  op: Equal
                  rhs: 
                    {
                      (ArithSubPart
                        anode: 
                          (ArithBinary
                            op_id: Arith_Plus
                            left: 
                              (ArithWord
                                w: 
                                  {
                                    (CommandSubPart
                                      command_list: (CommandList children:[(C {(time_in_seconds)})])
                                      left_token: <Left_CommandSub "$(">
                                      spids: [553 555]
                                    )
                                  }
                              )
                            right: (ArithWord w:{($ VSub_Name "$P4D_TIMEOUT")})
                          )
                        spids: [552 561]
                      )
                    }
                  spids: [551]
                )
              ]
              spids: [551]
            )
            (Sentence
              child: 
                (While
                  cond: [(C {(true)})]
                  body: 
                    (DoGroup
                      children: [
                        (If
                          arms: [
                            (if_arm
                              cond: [
                                (C {(test)} 
                                  {
                                    (CommandSubPart
                                      command_list: (CommandList children:[(C {(time_in_seconds)})])
                                      left_token: <Left_CommandSub "$(">
                                      spids: [576 578]
                                    )
                                  } {(-gt)} {($ VSub_Name "$timeout")}
                                )
                              ]
                              action: [(C {(kill)} {(-9)} {($ VSub_Name "$pid")}) (C {(exit)} {(1)})]
                              spids: [-1 585]
                            )
                          ]
                          spids: [-1 600]
                        )
                        (C {(sleep)} {(1)})
                      ]
                      spids: [569 608]
                    )
                )
              terminator: <Op_Amp "&">
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:watchdog_pid)
                  op: Equal
                  rhs: {($ VSub_Bang "$!")}
                  spids: [613]
                )
              ]
              spids: [613]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:ready) op:Equal rhs:{(SQ )} spids:[618])]
              spids: [618]
            )
            (While
              cond: [(C {(test)} {($ VSub_Name "$i")} {(-gt)} {(0)})]
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (SimpleCommand
                              words: [{(p4)} {(info)}]
                              redirects: [
                                (Redir
                                  op_id: Redir_Great
                                  fd: -1
                                  arg_word: {(/dev/null)}
                                  spids: [645]
                                )
                                (Redir
                                  op_id: Redir_GreatAnd
                                  fd: 2
                                  arg_word: {(1)}
                                  spids: [648]
                                )
                              ]
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:ready)
                                  op: Equal
                                  rhs: {(true)}
                                  spids: [655]
                                )
                              ]
                              spids: [655]
                            )
                            (ControlFlow token:<ControlFlow_Break break>)
                          ]
                          spids: [-1 652]
                        )
                      ]
                      spids: [-1 662]
                    )
                    (AndOr
                      children: [
                        (SimpleCommand
                          words: [{(kill)} {(-0)} {($ VSub_Name "$pid")}]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: 2
                              arg_word: {(/dev/null)}
                              spids: [675]
                            )
                          ]
                        )
                        (ControlFlow token:<ControlFlow_Break break>)
                      ]
                      op_id: Op_DPipe
                    )
                    (C {(echo)} {(waiting)} {(KW_For for)} {(p4d)} {(to)} {(start)})
                    (C {(sleep)} {(1)})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:i)
                          op: Equal
                          rhs: 
                            {
                              (ArithSubPart
                                anode: 
                                  (ArithBinary
                                    op_id: Arith_Minus
                                    left: (ArithWord w:{($ VSub_Name "$i")})
                                    right: (ArithWord w:{(Lit_Digits 1)})
                                  )
                                spids: [702 711]
                              )
                            }
                          spids: [701]
                        )
                      ]
                      spids: [701]
                    )
                  ]
                  spids: [632 714]
                )
            )
            (If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name "$ready"))})]
                  action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
                  spids: [-1 729]
                )
              ]
              spids: [-1 741]
            )
            (C {(p4_add_user)} {(author)})
            (AndOr
              children: [
                (C {(client_view)} {(DQ ("//depot/... //client/..."))})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [430]
        )
      spids: [425 429]
    )
    (FuncDef
      name: p4_add_user
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:name)
                      op: Equal
                      rhs: {($ VSub_Number "$1")}
                      spids: [784]
                    )
                  ]
                  spids: [784]
                )
                (SimpleCommand
                  words: [{(p4)} {(user)} {(-f)} {(-i)}]
                  redirects: [
                    (HereDoc
                      op_id: Redir_DLessDash
                      fd: -1
                      body: 
                        {
                          (DQ ("User: ") ($ VSub_Name "$name") ("\n") ("Email: ") ($ VSub_Name "$name") 
                            ("@example.com\n") ("FullName: Dr. ") ($ VSub_Name "$name") ("\n")
                          )
                        }
                      do_expansion: True
                      here_end: EOF
                      was_filled: True
                      spids: [798]
                    )
                  ]
                )
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [781]
        )
      spids: [776 780]
    )
    (FuncDef
      name: p4_add_job
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(p4)} {(job)} {(-f)} {(-i)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLessDash
                  fd: -1
                  body: 
                    {
                      (DQ ("Job: ") ($ VSub_Number "$1") ("\n") ("Status: open\n") ("User: dummy\n") 
                        ("Description:\n")
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: True
                  spids: [829]
                )
              ]
            )
          ]
          spids: [818]
        )
      spids: [813 817]
    )
    (FuncDef
      name: retry_until_success
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:timeout)
                  op: Equal
                  rhs: 
                    {
                      (ArithSubPart
                        anode: 
                          (ArithBinary
                            op_id: Arith_Plus
                            left: 
                              (ArithWord
                                w: 
                                  {
                                    (CommandSubPart
                                      command_list: (CommandList children:[(C {(time_in_seconds)})])
                                      left_token: <Left_CommandSub "$(">
                                      spids: [851 853]
                                    )
                                  }
                              )
                            right: (ArithWord w:{($ VSub_Name "$RETRY_TIMEOUT")})
                          )
                        spids: [850 859]
                      )
                    }
                  spids: [849]
                )
              ]
              spids: [849]
            )
            (Until
              cond: [
                (AndOr
                  children: [
                    (SimpleCommand
                      words: [{(DQ ($ VSub_At "$@"))}]
                      redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[868])]
                    )
                    (C {(test)} 
                      {
                        (CommandSubPart
                          command_list: (CommandList children:[(C {(time_in_seconds)})])
                          left_token: <Left_CommandSub "$(">
                          spids: [875 877]
                        )
                      } {(-gt)} {($ VSub_Name "$timeout")}
                    )
                  ]
                  op_id: Op_DPipe
                )
              ]
              body: (DoGroup children:[(C {(sleep)} {(1)})] spids:[884892])
            )
          ]
          spids: [846]
        )
      spids: [841 845]
    )
    (FuncDef
      name: retry_until_fail
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:timeout)
                  op: Equal
                  rhs: 
                    {
                      (ArithSubPart
                        anode: 
                          (ArithBinary
                            op_id: Arith_Plus
                            left: 
                              (ArithWord
                                w: 
                                  {
                                    (CommandSubPart
                                      command_list: (CommandList children:[(C {(time_in_seconds)})])
                                      left_token: <Left_CommandSub "$(">
                                      spids: [907 909]
                                    )
                                  }
                              )
                            right: (ArithWord w:{($ VSub_Name "$RETRY_TIMEOUT")})
                          )
                        spids: [906 915]
                      )
                    }
                  spids: [905]
                )
              ]
              spids: [905]
            )
            (Until
              cond: [
                (AndOr
                  children: [
                    (Pipeline
                      children: [
                        (SimpleCommand
                          words: [{(DQ ($ VSub_At "$@"))}]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: 2
                              arg_word: {(/dev/null)}
                              spids: [926]
                            )
                          ]
                        )
                      ]
                      negated: True
                    )
                    (C {(test)} 
                      {
                        (CommandSubPart
                          command_list: (CommandList children:[(C {(time_in_seconds)})])
                          left_token: <Left_CommandSub "$(">
                          spids: [933 935]
                        )
                      } {(-gt)} {($ VSub_Name "$timeout")}
                    )
                  ]
                  op_id: Op_DPipe
                )
              ]
              body: (DoGroup children:[(C {(sleep)} {(1)})] spids:[942950])
            )
          ]
          spids: [902]
        )
      spids: [897 901]
    )
    (FuncDef
      name: kill_p4d
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:pid)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(cat)} {(DQ ($ VSub_Name "$pidfile"))})]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [964 970]
                      )
                    }
                  spids: [963]
                )
              ]
              spids: [963]
            )
            (C {(retry_until_fail)} {(kill)} {($ VSub_Name "$pid")})
            (C {(retry_until_fail)} {(kill)} {(-9)} {($ VSub_Name "$pid")})
            (AndOr
              children: [
                (SimpleCommand
                  words: [{(test_must_fail)} {(kill)} {($ VSub_Name "$pid")}]
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: -1
                      arg_word: {(/dev/null)}
                      spids: [999]
                    )
                    (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1002])
                  ]
                )
                (AndOr
                  children: [
                    (C {(rm)} {(-rf)} {(DQ ($ VSub_Name "$db"))} {(DQ ($ VSub_Name "$cli"))} 
                      {(DQ ($ VSub_Name "$pidfile"))}
                    )
                    (C {(retry_until_fail)} {(kill)} {(-9)} {($ VSub_Name "$watchdog_pid")})
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [960]
        )
      spids: [955 959]
    )
    (FuncDef
      name: cleanup_git
      body: 
        (BraceGroup
          children: [
            (C {(retry_until_success)} {(rm)} {(-r)} {(DQ ($ VSub_Name "$git"))})
            (AndOr
              children: [
                (C {(test_must_fail)} {(test)} {(-d)} {(DQ ($ VSub_Name "$git"))})
                (C {(retry_until_success)} {(mkdir)} {(DQ ($ VSub_Name "$git"))})
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [1043]
        )
      spids: [1038 1042]
    )
    (FuncDef
      name: marshal_dump
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:what)
                      op: Equal
                      rhs: {($ VSub_Number "$1")}
                      spids: [1089]
                    )
                  ]
                  spids: [1089]
                )
                (AndOr
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:line)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Number 2>
                                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(1)})
                                spids: [1096 1100]
                              )
                            }
                          spids: [1095]
                        )
                      ]
                      spids: [1095]
                    )
                    (AndOr
                      children: [
                        (SimpleCommand
                          words: [{(cat)}]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: -1
                              arg_word: {(DQ ($ VSub_Name "$TRASH_DIRECTORY") (/marshal-dump.py))}
                              spids: [1107]
                            )
                            (HereDoc
                              op_id: Redir_DLessDash
                              fd: -1
                              body: 
                                {
                                  (DQ ("import marshal\n") ("import sys\n") 
                                    ("instream = getattr(sys.stdin, 'buffer', sys.stdin)\n") ("for i in range(") ($ VSub_Name "$line") ("):\n") ("    d = marshal.load(instream)\n") ("print(d[b'") 
                                    ($ VSub_Name "$what") ("'].decode('utf-8'))\n")
                                  )
                                }
                              do_expansion: True
                              here_end: EOF
                              was_filled: True
                              spids: [1113]
                            )
                          ]
                        )
                        (C {(DQ ($ VSub_Name "$PYTHON_PATH"))} 
                          {(DQ ($ VSub_Name "$TRASH_DIRECTORY") (/marshal-dump.py))}
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [1086]
        )
      spids: [1081 1085]
    )
    (FuncDef
      name: client_view
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [
                (Subshell
                  child: 
                    (AndOr
                      children: [
                        (SimpleCommand
                          words: [{(cat)}]
                          redirects: [
                            (HereDoc
                              op_id: Redir_DLessDash
                              fd: -1
                              body: 
                                {
                                  (DQ ("Client: ") ($ VSub_Name "$P4CLIENT") ("\n") ("Description: ") 
                                    ($ VSub_Name "$P4CLIENT") ("\n") ("Root: ") ($ VSub_Name "$cli") ("\n") ("AltRoots: ") 
                                    (CommandSubPart
                                      command_list: 
                                        (CommandList
                                          children: [(C {(native_path)} {(DQ ($ VSub_Name "$cli"))})]
                                        )
                                      left_token: <Left_CommandSub "$(">
                                      spids: [1178 1184]
                                    ) ("\n") ("LineEnd: unix\n") ("View:\n")
                                  )
                                }
                              do_expansion: True
                              here_end: EOF
                              was_filled: True
                              spids: [1163]
                            )
                          ]
                        )
                        (C {(printf)} 
                          {
                            (DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\t">) ("%s") 
                              (EscapedLiteralPart
                                token: <Lit_EscapedChar "\\n">
                              )
                            )
                          } {(DQ ($ VSub_At "$@"))}
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  spids: [1158 1202]
                )
                (C {(p4)} {(client)} {(-i)})
              ]
              negated: False
            )
          ]
          spids: [1155]
        )
      spids: [1150 1154]
    )
    (FuncDef
      name: is_cli_file_writeable
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:file)
                      op: Equal
                      rhs: {(DQ ($ VSub_Number "$1"))}
                      spids: [1231]
                    )
                  ]
                  spids: [1231]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (AndOr
                          children: [
                            (C {(test_have_prereq)} {(CYGWIN)})
                            (Pipeline
                              children: [(C {(p4)} {(-V)}) (C {(grep)} {(-q)} {(CYGWIN)})]
                              negated: False
                            )
                          ]
                          op_id: Op_DAmp
                        )
                      ]
                      action: [
                        (AndOr
                          children: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:stat)
                                  op: Equal
                                  rhs: 
                                    {
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [
                                              (C {(stat)} 
                                                {(--format) (Lit_Other "=") (Lit_Other "%") (a)} {(DQ ($ VSub_Name "$file"))}
                                              )
                                            ]
                                          )
                                        left_token: <Left_CommandSub "$(">
                                        spids: [1264 1275]
                                      )
                                    }
                                  spids: [1263]
                                )
                              ]
                              spids: [1263]
                            )
                            (C {(test)} {($ VSub_Name "$stat")} {(Lit_Other "=")} {(644)})
                          ]
                          op_id: Op_DAmp
                        )
                      ]
                      spids: [-1 1260]
                    )
                  ]
                  else_action: [(C {(test)} {(-w)} {(DQ ($ VSub_Name "$file"))})]
                  spids: [1289 1301]
                )
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [1220]
        )
      spids: [1215 1219]
    )
  ]
)