(command.CommandList
  children: [
    (C {(Id.KW_Set set)} {(-o)} {(nounset)})
    (C {(Id.KW_Set set)} {(-o)} {(pipefail)})
    (C {(Id.KW_Set set)} {(-o)} {(errexit)})
    (command.ShFunction
      name: deps
      body: 
        (command.BraceGroup
          children: [(C {(sudo)} {(apt)} {(install)} {(systemtap)} {(systemtap-sdt-dev)})]
        )
    )
    (command.ShFunction
      name: stap-deps
      body: (command.BraceGroup children:[(C {(sudo)} {(apt)} {(install)} {(libdw-dev)} {(libdw1)})])
    )
    (command.ShFunction
      name: download
      body: 
        (command.BraceGroup
          children: [
            (C {(wget)} {(--no-clobber)} {(--directory)} {(_tmp)} 
              {(https) (Id.Lit_Other ':') 
                (//sourceware.org/systemtap/ftp/releases/systemtap-3.1.tar.gz)
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: extract
      body: 
        (command.BraceGroup
          children: [
            (C {(cd)} {(_tmp)})
            (command.Simple
              words: [{(tar)} {(-x)} {(-z)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Less val:'<' span_id:155)
                  fd: -1
                  arg_word: {(systemtap-3.1.tar.gz)}
                )
              ]
            )
          ]
        )
    )
    (C {(readonly)} {(Id.Lit_VarLike 'PY36=') (Id.Lit_TildeLike '~') (/src/languages/Python-3.6.1)})
    (command.ShFunction
      name: build-python
      body: 
        (command.BraceGroup
          children: [
            (C {(pushd)} {($ Id.VSub_DollarName '$PY36')})
            (C {(./configure)} {(--with-dtrace)})
            (C {(make)} {(-j)} {(7)})
            (C {(popd)})
          ]
        )
    )
    (command.ShFunction
      name: elf
      body: 
        (command.BraceGroup
          children: [
            (C {(readelf)} {(-n)} 
              {
                (command_sub
                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:216)
                  command_list: (command.CommandList children:[(C {(which)} {(python3)})])
                )
              }
            )
            (C {(echo)} {(---)})
            (C {(readelf)} {(-n)} {($ Id.VSub_DollarName '$PY36') (/python)})
          ]
        )
    )
    (command.ShFunction
      name: _demo
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Id.Lit_VarLike 'stp=') 
                (DQ ($ Id.VSub_DollarName '$PY36') (/Lib/test/dtracedata/gc.stp))
              }
            )
            (C {(local)} {(Id.Lit_VarLike 'py=') (DQ ($ Id.VSub_DollarName '$PWD') (/test/sh_spec.py))})
            (C {(pushd)} {($ Id.VSub_DollarName '$PY36')})
            (C {(stap)} {(-v)} {($ Id.VSub_DollarName '$stp')} {(-c)} 
              {(DQ ('./python ') ($ Id.VSub_DollarName '$py'))}
            )
            (C {(popd)})
          ]
        )
    )
    (command.ShFunction
      name: demo
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(sudo)} {($ Id.VSub_Number '$0')} {(_demo)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:320)
            )
          ]
        )
    )
    (C {(DQ ($ Id.VSub_At '$@'))})
  ]
)