(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LLVM_REPO)
          op: Equal
          rhs: {(SQ <third_party/llvm/llvm>)}
          spids: [52]
        )
      ]
      spids: [52]
    )
    (C {(.)} 
      {
        (DQ 
          (CommandSubPart
            command_list: (CommandList children:[(C {(dirname)} {(DQ ($ VSub_Number "$0"))})])
            left_token: <Left_CommandSub "$(">
            spids: [60 66]
          ) (/versions.sh)
        )
      }
    )
    (C {(cd)} 
      {
        (DQ 
          (CommandSubPart
            command_list: (CommandList children:[(C {(dirname)} {(DQ ($ VSub_Number "$0"))})])
            left_token: <Left_CommandSub "$(">
            spids: [74 80]
          ) (/../..)
        )
      }
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ROOT)
          op: Equal
          rhs: {(DQ ($ VSub_Name "$PWD"))}
          spids: [84]
        )
      ]
      spids: [84]
    )
    (FuncDef
      name: check_repo
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (Subshell
                  child: 
                    (AndOr
                      children: [
                        (C {(cd)} 
                          {
                            (DQ 
                              (BracedVarSub
                                token: <VSub_Number 1>
                                suffix_op: 
                                  (StringUnary
                                    op_id: VTest_ColonQMark
                                    arg_word: {("no repo path")}
                                  )
                                spids: [105 109]
                              )
                            )
                          }
                        )
                        (AndOr
                          children: [
                            (DBracket
                              expr: (BoolUnary op_id:BoolUnary_d child:{(DQ (.git))})
                            )
                            (AndOr
                              children: [
                                (SimpleCommand
                                  words: [
                                    {(git)}
                                    {(merge-base)}
                                    {(--is-ancestor)}
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          token: <VSub_Number 3>
                                          suffix_op: 
                                            (StringUnary
                                              op_id: VTest_ColonQMark
                                              arg_word: {("no SHA")}
                                            )
                                          spids: [135 139]
                                        )
                                      )
                                    }
                                    {(HEAD)}
                                  ]
                                  redirects: [
                                    (Redir
                                      op_id: Redir_Great
                                      fd: 2
                                      arg_word: {(/dev/null)}
                                      spids: [144]
                                    )
                                  ]
                                )
                                (C {(cd)} {(DQ ($ VSub_Name "$ROOT"))})
                              ]
                              op_id: Op_DAmp
                            )
                          ]
                          op_id: Op_DAmp
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  spids: [100 157]
                )
                (AndOr
                  children: [
                    (Subshell
                      child: 
                        (AndOr
                          children: [
                            (C {(cd)} {(DQ ($ VSub_Number "$1"))})
                            (AndOr
                              children: [
                                (DBracket
                                  expr: (BoolUnary op_id:BoolUnary_d child:{(DQ (.svn))})
                                )
                                (AndOr
                                  children: [
                                    (DBracket
                                      expr: 
                                        (BoolBinary
                                          op_id: BoolBinary_ge
                                          left: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [(C {(svnversion)})]
                                                  )
                                                left_token: <Left_CommandSub "$(">
                                                spids: [189 191]
                                              )
                                            }
                                          right: 
                                            {
                                              (DQ 
                                                (BracedVarSub
                                                  token: <VSub_Number 4>
                                                  suffix_op: 
                                                    (StringUnary
                                                      op_id: VTest_ColonQMark
                                                      arg_word: {("no revison")}
                                                    )
                                                  spids: [196 200]
                                                )
                                              )
                                            }
                                        )
                                    )
                                    (C {(cd)} {(DQ ($ VSub_Name "$ROOT"))})
                                  ]
                                  op_id: Op_DAmp
                                )
                              ]
                              op_id: Op_DAmp
                            )
                          ]
                          op_id: Op_DAmp
                        )
                      spids: [163 215]
                    )
                    (Subshell
                      child: 
                        (AndOr
                          children: [
                            (C {(echo)} 
                              {
                                (DQ ("Missing ") 
                                  (BracedVarSub
                                    token: <VSub_Number 2>
                                    suffix_op: 
                                      (StringUnary
                                        op_id: VTest_ColonHyphen
                                        arg_word: {("repo checkout")}
                                      )
                                    spids: [229 233]
                                  ) (" with ancestor ") ($ VSub_Number "$3") (" (rev ") ($ VSub_Number "$4") (") in ") ($ VSub_Number "$1") 
                                  ("\n") ("Please run ./tools/modules/update.sh.")
                                )
                              }
                            )
                            (C {(exit)} {(1)})
                          ]
                          op_id: Op_DAmp
                        )
                      spids: [221 252]
                    )
                  ]
                  op_id: Op_DPipe
                )
              ]
              op_id: Op_DPipe
            )
          ]
          spids: [97]
        )
      spids: [93 96]
    )
    (C {(check_repo)} {(DQ (${ VSub_Name LLVM_REPO))} {(DQ (LLVM))} {(DQ (${ VSub_Name MIN_LLVM_SHA))} 
      {(DQ (${ VSub_Name MIN_LLVM_REV))}
    )
    (C {(check_repo)} {(DQ (${ VSub_Name LLVM_REPO) (/tools/clang))} {(DQ (clang))} 
      {(DQ (${ VSub_Name MIN_CLANG_SHA))} {(DQ (${ VSub_Name MIN_CLANG_REV))}
    )
  ]
)