(CommandList
  children: [
    (C {(eval)} 
      {
        (DQ ('set -- ') 
          (CommandSubPart
            command_list: 
              (CommandList
                children: [
                  (C {(getopt)} {(-o)} {(SQ <'hwx:f:'>)} {(-l)} 
                    {(help) (Lit_Comma ',') (watch) (Lit_Comma ',') (setup-file) (Lit_Other ':') 
                      (Lit_Comma ',') (extract) (Lit_Other ':') (Lit_Comma ',') (module-api) (Lit_Other ':') (Lit_Comma ',') (api-format) 
                      (Lit_Other ':')
                    } {(--)} {(DQ ($ VSub_At '$@'))}
                  )
                ]
              )
            left_token: <Left_CommandSub '$('>
            spids: [7 39]
          )
        )
      }
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:script) op:Equal rhs:{(EmptyPart)} spids:[42])]
      spids: [42]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:script_args)
          op: Equal
          rhs: {(ArrayLiteralPart)}
          spids: [44]
        )
      ]
      spids: [44]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:watch_sources) op:Equal rhs:{(EmptyPart)} spids:[49])]
      spids: [49]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:action) op:Equal rhs:{(setup)} spids:[51])]
      spids: [51]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:api_format) op:Equal rhs:{(markdown)} spids:[54])]
      spids: [54]
    )
    (WhileUntil
      keyword: <KW_While while>
      cond: [
        (Sentence
          child: 
            (DParen
              child: 
                (ArithBinary
                  op_id: Arith_Great
                  left: (ArithWord w:{($ VSub_Pound '$#')})
                  right: (ArithWord w:{(Lit_Digits 0)})
                )
              spids: [59 68]
            )
          terminator: <Op_Semi ';'>
        )
      ]
      body: 
        (DoGroup
          children: [
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:opt)
                      op: Equal
                      rhs: {(DQ ($ VSub_Number '$1'))}
                      spids: [74]
                    )
                  ]
                  spids: [74]
                )
              terminator: <Op_Semi ';'>
            )
            (C {(shift)})
            (Case
              to_match: {(DQ ($ VSub_Name '$opt'))}
              arms: [
                (case_arm
                  pat_list: [{(-w)} {(--watch)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:watch_sources)
                          op: Equal
                          rhs: {(true)}
                          spids: [97]
                        )
                      ]
                      spids: [97]
                    )
                  ]
                  spids: [92 95 99 16777215]
                )
                (case_arm
                  pat_list: [{(-x)} {(--extract)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:action)
                          op: Equal
                          rhs: {(extract)}
                          spids: [107]
                        )
                      ]
                      spids: [107]
                    )
                  ]
                  spids: [102 105 109 16777215]
                )
                (case_arm
                  pat_list: [{(-f)} {(--setup-file)}]
                  action: [
                    (Case
                      to_match: {(DQ ($ VSub_Number '$1'))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(git) (Lit_Other ':') (//) (Lit_Other '*')}
                            {(https) (Lit_Other ':') (//) (Lit_Other '*') (.git)}
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:hash)
                                  op: Equal
                                  rhs: 
                                    {
                                      (ArrayLiteralPart
                                        words: [
                                          {
                                            (CommandSubPart
                                              command_list: 
                                                (CommandList
                                                  children: [
                                                    (SimpleCommand
                                                      words: [{(sha256sum)}]
                                                      redirects: [
                                                        (Redir
                                                          op: <Redir_TLess '<<<'>
                                                          fd: 16777215
                                                          arg_word: {(DQ ($ VSub_Number '$1'))}
                                                        )
                                                      ]
                                                    )
                                                  ]
                                                )
                                              left_token: <Left_CommandSub '$('>
                                              spids: [143 151]
                                            )
                                          }
                                        ]
                                      )
                                    }
                                  spids: [140]
                                )
                              ]
                              spids: [140]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:script)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ($ VSub_Name '$HOME') (/.setup/git-clone/) 
                                        (BracedVarSub
                                          token: <VSub_Number 1>
                                          suffix_op: 
                                            (StringUnary
                                              op_id: VOp1_DPound
                                              arg_word: {('*') (Lit_Slash /)}
                                            )
                                          spids: [160 165]
                                        ) (-) ($ VSub_Name '$hash')
                                      )
                                    }
                                  spids: [156]
                                )
                              ]
                              spids: [156]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(KW_Bang '!')} {(-e)} 
                                          {(DQ ($ VSub_Name '$script'))} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name '$script'))})
                                    (C {(git)} {(clone)} {(DQ ($ VSub_Number '$1'))} 
                                      {(DQ ($ VSub_Name '$script'))}
                                    )
                                  ]
                                  spids: [16777215 186]
                                )
                              ]
                              spids: [16777215 211]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:script)
                                  op: PlusEqual
                                  rhs: {(/Setup)}
                                  spids: [214]
                                )
                              ]
                              spids: [214]
                            )
                          ]
                          spids: [127 137 216 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:script)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (CommandSubPart
                                          command_list: 
                                            (CommandList
                                              children: [
                                                (AndOr
                                                  ops: [Op_DPipe]
                                                  children: [
                                                    (C {(realpath)} {(DQ ($ VSub_Number '$1'))})
                                                    (C {(echo)} {(DQ ($ VSub_Number '$1'))})
                                                  ]
                                                )
                                              ]
                                            )
                                          left_token: <Left_CommandSub '$('>
                                          spids: [224 238]
                                        )
                                      )
                                    }
                                  spids: [222]
                                )
                              ]
                              spids: [222]
                            )
                          ]
                          spids: [219 220 240 16777215]
                        )
                      ]
                      spids: [118 124 243]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:program)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name script>
                                  suffix_op: 
                                    (StringUnary
                                      op_id: VOp1_DPound
                                      arg_word: {('*') (Lit_Slash /)}
                                    )
                                  spids: [248 253]
                                )
                              )
                            }
                          spids: [246]
                        )
                      ]
                      spids: [246]
                    )
                    (C {(shift)})
                  ]
                  spids: [112 115 260 16777215]
                )
                (case_arm
                  pat_list: [{(-h)} {(--help)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:action)
                          op: Equal
                          rhs: {(show_help)}
                          spids: [268]
                        )
                      ]
                      spids: [268]
                    )
                  ]
                  spids: [263 266 270 16777215]
                )
                (case_arm
                  pat_list: [{(--module-api)}]
                  action: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:action)
                              op: Equal
                              rhs: {(DQ ('show_api ') ($ VSub_Number '$1'))}
                              spids: [276]
                            )
                          ]
                          spids: [276]
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (C {(shift)})
                  ]
                  spids: [273 274 284 16777215]
                )
                (case_arm
                  pat_list: [{(--api-format)}]
                  action: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:api_format)
                              op: Equal
                              rhs: {(DQ ($ VSub_Number '$1'))}
                              spids: [290]
                            )
                          ]
                          spids: [290]
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (C {(shift)})
                  ]
                  spids: [287 288 297 16777215]
                )
                (case_arm
                  pat_list: [{(--)}]
                  action: [(C {(Lit_Other ':')})]
                  spids: [300 301 304 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:script_args)
                          op: PlusEqual
                          rhs: {(ArrayLiteralPart words:[{(DQ ($ VSub_Name '$opt'))}])}
                          spids: [310]
                        )
                      ]
                      spids: [310]
                    )
                  ]
                  spids: [307 308 318 16777215]
                )
              ]
              spids: [83 89 321]
            )
          ]
          spids: [71 323]
        )
    )
    (C {(shopt)} {(-s)} {(extglob)})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} 
                  {
                    (DQ 
                      (BracedVarSub
                        token: <VSub_Name SETUP_INSTALL_DIR>
                        suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(x)})
                        spids: [337 341]
                      )
                    )
                  } {(Lit_Other '=') (Lit_Other '=')} {(SQ )} {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Case
              to_match: {(DQ ($ VSub_Number '$0'))}
              arms: [
                (case_arm
                  pat_list: [{(Lit_Other '*') (/) (Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:SETUP_INSTALL_DIR)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Number 0>
                                suffix_op: 
                                  (PatSub
                                    pat: 
                                      {(EscapedLiteralPart token:<Lit_EscapedChar '\\/'>) ('*([^') 
                                        (EscapedLiteralPart
                                          token: <Lit_EscapedChar '\\/'>
                                        ) ('])')
                                      }
                                    replace: {(Lit_Slash /) (..)}
                                    do_all: F
                                    do_prefix: F
                                    do_suffix: T
                                  )
                                spids: [371 382]
                              )
                            }
                          spids: [370]
                        )
                      ]
                      spids: [370]
                    )
                  ]
                  spids: [365 368 383 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (SimpleCommand
                      words: [
                        {(echo)}
                        {
                          (DQ (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('0: ') 
                            ($ VSub_Number '$0')
                          )
                        }
                      ]
                      redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
                    )
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:SETUP_INSTALL_DIR)
                              op: Equal
                              rhs: 
                                {
                                  (DQ 
                                    (CommandSubPart
                                      command_list: 
                                        (CommandList
                                          children: [(C {(which)} {(DQ ($ VSub_Number '$0'))})]
                                        )
                                      left_token: <Left_CommandSub '$('>
                                      spids: [405 411]
                                    )
                                  )
                                }
                              spids: [403]
                            )
                          ]
                          spids: [403]
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:SETUP_INSTALL_DIR)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name SETUP_INSTALL_DIR>
                                  suffix_op: 
                                    (PatSub
                                      pat: {(EscapedLiteralPart token:<Lit_EscapedChar '\\/'>) ('*')}
                                      replace: {(Lit_Slash /) (..)}
                                      do_all: F
                                      do_prefix: F
                                      do_suffix: T
                                    )
                                  spids: [417 426]
                                )
                              )
                            }
                          spids: [415]
                        )
                      ]
                      spids: [415]
                    )
                  ]
                  spids: [386 387 428 16777215]
                )
              ]
              spids: [356 362 431]
            )
          ]
          spids: [16777215 353]
        )
      ]
      spids: [16777215 433]
    )
  ]
)