(CommandList
  children: [
    (FuncDef
      name: gethgversion
      body: 
        (BraceGroup
          children: [
            (C {(make)} {(clean)})
            (AndOr
              children: [
                (C {(make)} {(Assign_Local local)})
                (C {(make)} {(Assign_Local local)} {(Lit_VarLike 'PURE=') (--pure)})
              ]
              op_id: Op_DPipe
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:HG)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name '$PWD') (/hg))}
                  spids: [26]
                )
              ]
              spids: [26]
            )
            (AndOr
              children: [
                (SimpleCommand
                  words: [{($ VSub_Name '$HG')} {(version)}]
                  redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[38])]
                )
                (BraceGroup
                  children: [
                    (Sentence
                      child: (C {(echo)} {(SQ <'abort: hg version failed!'>)})
                      terminator: <Op_Semi ';'>
                    )
                    (Sentence child:(C {(exit)} {(1)}) terminator:<Op_Semi ';'>)
                  ]
                  spids: [44]
                )
              ]
              op_id: Op_DPipe
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:hgversion)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {($ VSub_Name '$HG')} {(version)})
                                  (C {(sed)} {(-ne)} {(SQ <'s/.*(version \\(.*\\))$/\\1/p'>)})
                                ]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [64 78]
                      )
                    }
                  spids: [63]
                )
              ]
              spids: [63]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(echo)} {($ VSub_Name '$hgversion')})
                            (SimpleCommand
                              words: [{(grep)} {(--)} {(SQ <->)}]
                              redirects: [
                                (Redir
                                  op_id: Redir_Great
                                  fd: -1
                                  arg_word: {(/dev/null)}
                                  spids: [98]
                                )
                                (Redir
                                  op_id: Redir_GreatAnd
                                  fd: 2
                                  arg_word: {(1)}
                                  spids: [102]
                                )
                              ]
                            )
                          ]
                          negated: False
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:version)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(echo)} {($ VSub_Name '$hgversion')})
                                          (C {(cut)} {(-d-)} {(-f1)})
                                        ]
                                        negated: False
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [114 126]
                              )
                            }
                          spids: [113]
                        )
                      ]
                      spids: [113]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:release)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(echo)} {($ VSub_Name '$hgversion')})
                                          (C {(cut)} {(-d-)} {(-f2)})
                                          (C {(sed)} {(-e)} {(SQ <'s/+.*//'>)})
                                        ]
                                        negated: False
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [130 152]
                              )
                            }
                          spids: [129]
                        )
                      ]
                      spids: [129]
                    )
                  ]
                  spids: [-1 106]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:version)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (Pipeline
                                    children: [
                                      (C {(echo)} {($ VSub_Name '$hgversion')})
                                      (C {(sed)} {(-e)} {(SQ <'s/+.*//'>)})
                                    ]
                                    negated: False
                                  )
                                ]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [163 177]
                          )
                        }
                      spids: [162]
                    )
                  ]
                  spids: [162]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:release)
                      op: Equal
                      rhs: {(SQ <0>)}
                      spids: [180]
                    )
                  ]
                  spids: [180]
                )
              ]
              spids: [155 186]
            )
          ]
          spids: [4]
        )
      spids: [0 3]
    )
  ]
)