(CommandList
  children: [
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(set)} {(-o)} {(errexit)})
    (FuncDef
      name: deps
      body: 
        (BraceGroup
          children: [(C {(sudo)} {(apt)} {(install)} {(systemtap)} {(systemtap-sdt-dev)})]
          spids: [66]
        )
      spids: [62 65]
    )
    (FuncDef
      name: stap-deps
      body: 
        (BraceGroup
          children: [(C {(sudo)} {(apt)} {(install)} {(libdw-dev)} {(libdw1)})]
          spids: [90]
        )
      spids: [86 89]
    )
    (FuncDef
      name: download
      body: 
        (BraceGroup
          children: [
            (C {(wget)} {(--no-clobber)} {(--directory)} {(_tmp)} 
              {(https) (Lit_Other ':') (//sourceware.org/systemtap/ftp/releases/systemtap-3.1.tar.gz)}
            )
          ]
          spids: [117]
        )
      spids: [113 116]
    )
    (FuncDef
      name: extract
      body: 
        (BraceGroup
          children: [
            (C {(cd)} {(_tmp)})
            (SimpleCommand
              words: [{(tar)} {(-x)} {(-z)}]
              redirects: [
                (Redir
                  op_id: Redir_Less
                  fd: 16777215
                  arg_word: {(systemtap-3.1.tar.gz)}
                  spids: [155]
                )
              ]
            )
          ]
          spids: [141]
        )
      spids: [137 140]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (LhsName name:PY36)
          op: Equal
          rhs: {(TildeSubPart prefix:'') (/src/languages/Python-3.6.1)}
          spids: [164]
        )
      ]
      spids: [162]
    )
    (FuncDef
      name: build-python
      body: 
        (BraceGroup
          children: [
            (C {(pushd)} {($ VSub_Name '$PY36')})
            (C {(./configure)} {(--with-dtrace)})
            (C {(make)} {(-j)} {(7)})
            (C {(popd)})
          ]
          spids: [173]
        )
      spids: [169 172]
    )
    (FuncDef
      name: elf
      body: 
        (BraceGroup
          children: [
            (C {(readelf)} {(-n)} 
              {
                (CommandSubPart
                  command_list: (CommandList children:[(C {(which)} {(python3)})])
                  left_token: <Left_CommandSub '$('>
                  spids: [216 220]
                )
              }
            )
            (C {(echo)} {(---)})
            (C {(readelf)} {(-n)} {($ VSub_Name '$PY36') (/python)})
          ]
          spids: [209]
        )
      spids: [205 208]
    )
    (FuncDef
      name: _demo
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:stp)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name '$PY36') (/Lib/test/dtracedata/gc.stp))}
                  spids: [264]
                )
              ]
              spids: [262]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:py)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name '$PWD') (/test/sh_spec.py))}
                  spids: [278]
                )
              ]
              spids: [276]
            )
            (C {(pushd)} {($ VSub_Name '$PY36')})
            (C {(stap)} {(-v)} {($ VSub_Name '$stp')} {(-c)} {(DQ ('./python ') ($ VSub_Name '$py'))})
            (C {(popd)})
          ]
          spids: [246]
        )
      spids: [242 245]
    )
    (FuncDef
      name: demo
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: (C {(sudo)} {($ VSub_Number '$0')} {(_demo)})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [313]
        )
      spids: [309 312]
    )
    (C {(DQ ($ VSub_At '$@'))})
  ]
)