(command.CommandList
  children: [
    (C {(Id.KW_Set set)} {(-o)} {(nounset)})
    (C {(Id.KW_Set set)} {(-o)} {(pipefail)})
    (C {(Id.KW_Set set)} {(-o)} {(errexit)})
    (C {(source)} {(test/common.sh)})
    (command.ShFunction
      name: _banner
      body: 
        (command.BraceGroup
          children: [
            (C {(echo)} {(-----)})
            (C {(echo)} {(DQ ($ Id.VSub_At '$@'))})
            (C {(echo)} {(-----)})
          ]
        )
    )
    (command.ShFunction
      name: prereq
      body: (command.BraceGroup children:[(C {(test/unit.sh)} {(all)}) (C {(test/spec.sh)} {(all)})])
    )
    (command.ShFunction
      name: measure-shells
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Id.Lit_VarLike 'base_dir=') 
                (braced_var_sub
                  token: (Token id:Id.VSub_Number val:1 span_id:135)
                  suffix_op: 
                    (suffix_op.Unary
                      op_id: Id.VTest_ColonHyphen
                      arg_word: {(..) (Id.Lit_Slash /) (benchmark-data)}
                    )
                )
              }
            )
            (C {(local)} {(provenance)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:provenance)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:150)
                        command_list: 
                          (command.CommandList
                            children: [(C {(benchmarks/id.sh)} {(shell-provenance)})]
                          )
                      )
                    }
                  spids: [149]
                )
              ]
            )
            (C {(benchmarks/vm-baseline.sh)} {(measure)} {($ Id.VSub_DollarName '$provenance')} 
              {($ Id.VSub_DollarName '$base_dir') (/vm-baseline)}
            )
            (C {(benchmarks/osh-runtime.sh)} {(measure)} {($ Id.VSub_DollarName '$provenance')} 
              {($ Id.VSub_DollarName '$base_dir') (/osh-runtime)}
            )
            (C {(benchmarks/osh-parser.sh)} {(measure)} {($ Id.VSub_DollarName '$provenance')} 
              {($ Id.VSub_DollarName '$base_dir') (/osh-parser)}
            )
          ]
        )
    )
    (command.ShFunction
      name: measure-builds
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Id.Lit_VarLike 'base_dir=') 
                (braced_var_sub
                  token: (Token id:Id.VSub_Number val:1 span_id:204)
                  suffix_op: 
                    (suffix_op.Unary
                      op_id: Id.VTest_ColonHyphen
                      arg_word: {(..) (Id.Lit_Slash /) (benchmark-data)}
                    )
                )
              }
            )
            (C {(local)} {(provenance)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:provenance)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:219)
                        command_list: 
                          (command.CommandList
                            children: [(C {(benchmarks/id.sh)} {(compiler-provenance)})]
                          )
                      )
                    }
                  spids: [218]
                )
              ]
            )
            (C {(benchmarks/ovm-build.sh)} {(measure)} {($ Id.VSub_DollarName '$provenance')} 
              {($ Id.VSub_DollarName '$base_dir') (/ovm-build)}
            )
          ]
        )
    )
    (command.ShFunction
      name: all
      body: (command.BraceGroup children:[(C {(measure-shells)}) (C {(measure-builds)})])
    )
    (command.ShFunction
      name: demo-tasks
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(Id.Lit_VarLike 'provenance=') ($ Id.VSub_Number '$1')})
            (C {(local)} 
              {(Id.Lit_VarLike 'name=') 
                (command_sub
                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:295)
                  command_list: 
                    (command.CommandList
                      children: [(C {(basename)} {($ Id.VSub_DollarName '$provenance')})]
                    )
                )
              }
            )
            (C {(local)} 
              {(Id.Lit_VarLike 'job_id=') 
                (braced_var_sub
                  token: (Token id:Id.VSub_Name val:name span_id:306)
                  suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{(.provenance.txt)})
                )
              }
            )
            (C {(echo)} {(DQ ('JOB ID: ') ($ Id.VSub_DollarName '$job_id'))})
            (command.Pipeline
              children: [
                (C {(cat)} {($ Id.VSub_DollarName '$provenance')})
                (command.WhileUntil
                  keyword: (Token id:Id.KW_While val:while span_id:332)
                  cond: [
                    (command.Sentence
                      child: (C {(read)} {(_)} {(_)} {(_)} {(sh_path)} {(_)})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:345)
                    )
                  ]
                  body: 
                    (command.DoGroup
                      children: [
                        (command.ForEach
                          iter_name: i
                          iter_words: [{(1)} {(2)} {(3)}]
                          do_arg_iter: F
                          body: 
                            (command.DoGroup
                              children: [
                                (C {(echo)} {($ Id.VSub_DollarName '$i')} 
                                  {($ Id.VSub_DollarName '$sh_path')}
                                )
                              ]
                            )
                        )
                      ]
                    )
                )
              ]
              negated: F
            )
          ]
        )
    )
    (C {(DQ ($ Id.VSub_At '$@'))})
  ]
)