(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: install
      body: 
        (BraceGroup
          children: [
            (C {<sudo>} {<apt>} {<install>} {<linux-tools-common>} {<linux-tools-4.13.0-36-generic>} 
              {<linux-tools-generic>}
            )
          ]
        )
    )
    (command.ShFunction
      name: debug-symbols
      body: 
        (BraceGroup
          children: [
            (C {<sudo>} {<apt>} {<install>} {<zlib1g-dbg>})
            (C {<dpkg>} {<--listfiles>} {<zlib1g-dbg>})
          ]
        )
    )
    (command.ShFunction
      name: _record
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'flag='> (SQ <-g>)})
            (C {<local>} {<Id.Lit_VarLike 'bin='> <'_bin/oil.ovm-opt'>})
            (C {<local>} {<Id.Lit_VarLike 'freq='> <1000>})
            (C {<local>} {<Id.Lit_VarLike 'file='> <'benchmarks/testdata/configure-coreutils'>})
            (command.TimeBlock
              pipeline: 
                (C {<perf>} {<record>} {($ Id.VSub_DollarName '$flag')} {<-F>} 
                  {($ Id.VSub_DollarName '$freq')} {<-o>} {<perf.data>} {<-->} {($ Id.VSub_DollarName '$bin')} {<osh>} {<--ast-format>} {<none>} {<-n>} 
                  {($ Id.VSub_DollarName '$file')}
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: record
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<sudo>} {($ Id.VSub_Number '$0')} {<_record>})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: report
      body: 
        (BraceGroup
          children: [(C {<perf>} {<report>} {<-n>} {<--stdio>} {(DQ ($ Id.VSub_At '$@'))})]
        )
    )
    (command.ShFunction
      name: _make-readable
      body: 
        (BraceGroup
          children: [
            (C {<chmod>} {<644>} {<perf.data>})
            (C {<chown>} {<andy>} {<perf.data>})
            (C {<file>} {<perf.data>})
            (C {<ls>} {<-l>} {<perf.data>})
          ]
        )
    )
    (command.ShFunction
      name: make-readable
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<sudo>} {($ Id.VSub_Number '$0')} {<_make-readable>})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: _stat
      body: 
        (BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {<perf>} {<stat>} {<-->} {<'_bin/osh'>} {<-n>} {<'benchmarks/testdata/abuild'>})
                (C {<wc>} {<-l>})
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: stat
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<sudo>} {($ Id.VSub_Number '$0')} {<_stat>})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: flamegraph
      body: 
        (BraceGroup
          children: [
            (C 
              {(word_part.TildeSub token:<Id.Lit_TildeLike '~'>) 
                <'/git/other/FlameGraph/flamegraph.pl'>
              } {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: stackcollapse-perf
      body: 
        (BraceGroup
          children: [
            (C 
              {(word_part.TildeSub token:<Id.Lit_TildeLike '~'>) 
                <'/git/other/FlameGraph/stackcollapse-perf.pl'>
              } {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: make-graph
      body: 
        (BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {<perf>} {<script>})
                (command.Simple
                  words: [{<stackcollapse-perf>}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<out.perf-folded>}
                    )
                  ]
                  do_fork: T
                )
              ]
              negated: F
            )
            (command.Simple
              words: [{<flamegraph>} {<out.perf-folded>}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<perf-kernel.svg>}
                )
              ]
              do_fork: T
            )
          ]
        )
    )
    (C {(DQ ($ Id.VSub_At '$@'))})
  ]
)