(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)})
    (C {(source)} {(benchmarks/common.sh)})
    (C {(readonly)} {(Id.Lit_VarLike 'BASE_DIR=') (_tmp/osh-parser)})
    (C {(readonly)} {(Id.Lit_VarLike 'SORTED=') ($ Id.VSub_DollarName '$BASE_DIR') (/tmp/sorted.txt)})
    (command.ShFunction
      name: write-sorted-manifest
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Id.Lit_VarLike 'files=') 
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: 
                    (suffix_op.Unary
                      op_id: Id.VTest_ColonHyphen
                      arg_word: {(benchmarks) (Id.Lit_Slash /) (osh-parser-files.txt)}
                    )
                )
              }
            )
            (C {(local)} 
              {(Id.Lit_VarLike 'counts=') ($ Id.VSub_DollarName '$BASE_DIR') (/tmp/line-counts.txt)}
            )
            (C {(local)} {(Id.Lit_VarLike 'csv_out=') ($ Id.VSub_Number '$2')})
            (command.Pipeline
              children: [
                (C {(grep)} {(-v)} {(SQ <'^#'>)} {($ Id.VSub_DollarName '$files')})
                (C {(xargs)} {(wc)} {(-l)})
                (command.Simple
                  words: [{(sort)} {(-n)}]
                  redirects: [
                    (redir.Redir
                      op: <Id.Redir_Great '>'>
                      fd: -1
                      arg_word: {($ Id.VSub_DollarName '$counts')}
                    )
                  ]
                )
              ]
              negated: F
            )
            (command.Pipeline
              children: [
                (C {(cat)} {($ Id.VSub_DollarName '$counts')})
                (command.Simple
                  words: [{(awk)} {(SQ <'$2 != "total" { print $2 }'>)}]
                  redirects: [
                    (redir.Redir
                      op: <Id.Redir_Great '>'>
                      fd: -1
                      arg_word: {($ Id.VSub_DollarName '$SORTED')}
                    )
                  ]
                )
              ]
              negated: F
            )
            (command.Pipeline
              children: [
                (C {(cat)} {($ Id.VSub_DollarName '$counts')})
                (command.Simple
                  words: [
                    {(awk)}
                    {
                      (SQ <'\n'> <'      BEGIN { print "num_lines,path" }\n'> 
                        <'      $2 != "total" { print $1 "," $2 }'>
                      )
                    }
                  ]
                  redirects: [
                    (redir.Redir
                      op: <Id.Redir_Great '>'>
                      fd: -1
                      arg_word: {($ Id.VSub_DollarName '$csv_out')}
                    )
                  ]
                )
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: parser-task
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(Id.Lit_VarLike 'raw_dir=') ($ Id.VSub_Number '$1')})
            (C {(local)} {(Id.Lit_VarLike 'job_id=') ($ Id.VSub_Number '$2')})
            (C {(local)} {(Id.Lit_VarLike 'host=') ($ Id.VSub_Number '$3')})
            (C {(local)} {(Id.Lit_VarLike 'host_hash=') ($ Id.VSub_Number '$4')})
            (C {(local)} {(Id.Lit_VarLike 'sh_path=') ($ Id.VSub_Number '$5')})
            (C {(local)} {(Id.Lit_VarLike 'shell_hash=') ($ Id.VSub_Number '$6')})
            (C {(local)} {(Id.Lit_VarLike 'script_path=') ($ Id.VSub_Number '$7')})
            (C {(echo)} 
              {
                (DQ ('--- ') ($ Id.VSub_DollarName '$sh_path') (' ') 
                  ($ Id.VSub_DollarName '$script_path') (' ---')
                )
              }
            )
            (C {(local)} 
              {(Id.Lit_VarLike 'times_out=') 
                (DQ ($ Id.VSub_DollarName '$raw_dir') (/) ($ Id.VSub_DollarName '$host') (.) 
                  ($ Id.VSub_DollarName '$job_id') (.times.csv)
                )
              }
            )
            (C {(local)} 
              {(Id.Lit_VarLike 'vm_out_dir=') 
                (DQ ($ Id.VSub_DollarName '$raw_dir') (/) ($ Id.VSub_DollarName '$host') (.) 
                  ($ Id.VSub_DollarName '$job_id') (.virtual-memory)
                )
              }
            )
            (C {(mkdir)} {(-p)} {($ Id.VSub_DollarName '$vm_out_dir')})
            (C {(local)} {(shell_name)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:shell_name)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [(C {(basename)} {($ Id.VSub_DollarName '$sh_path')})]
                          )
                      )
                    }
                  spids: [295]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:extra_args)
                  op: assign_op.Equal
                  rhs: {(SQ )}
                  spids: [308]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(test)} {(DQ ($ Id.VSub_DollarName '$shell_name'))} {(Id.Lit_Equals '=')} 
                          {(SQ <osh>)}
                        )
                      terminator: <Id.Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(local)} {(script_name)})
                    (C {(local)} {(vm_out_path)})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:script_name)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                command_list: 
                                  (command.CommandList
                                    children: [(C {(basename)} {($ Id.VSub_DollarName '$script_path')})]
                                  )
                              )
                            }
                          spids: [341]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:vm_out_path)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ (${ Id.VSub_Name vm_out_dir) (/) (${ Id.VSub_Name shell_name) (-) 
                                (${ Id.VSub_Name shell_hash) (__) (${ Id.VSub_Name script_name) (.txt)
                              )
                            }
                          spids: [349]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:extra_args)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ('--ast-format none --parser-mem-dump ') 
                                ($ Id.VSub_DollarName '$vm_out_path')
                              )
                            }
                          spids: [370]
                        )
                      ]
                    )
                  ]
                  spids: [313 328]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(benchmarks/time.py)} {(--output)} {($ Id.VSub_DollarName '$times_out')} {(--field)} 
                  {(DQ ($ Id.VSub_DollarName '$host'))} {(--field)} {(DQ ($ Id.VSub_DollarName '$host_hash'))} {(--field)} 
                  {(DQ ($ Id.VSub_DollarName '$shell_name'))} {(--field)} {(DQ ($ Id.VSub_DollarName '$shell_hash'))} {(--field)} 
                  {(DQ ($ Id.VSub_DollarName '$script_path'))} {(--)} {(DQ ($ Id.VSub_DollarName '$sh_path'))} {(-n)} {($ Id.VSub_DollarName '$extra_args')} 
                  {(DQ ($ Id.VSub_DollarName '$script_path'))}
                )
                (C {(echo)} {(FAILED)})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: print-tasks
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(Id.Lit_VarLike 'provenance=') ($ Id.VSub_Number '$1')})
            (command.Pipeline
              children: [
                (C {(cat)} {($ Id.VSub_DollarName '$provenance')})
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: [(command.Sentence child:(C {(read)} {(fields)}) terminator:<Id.Op_Semi ';'>)]
                  body: 
                    (command.DoGroup
                      children: [
                        (command.Pipeline
                          children: [
                            (C {(cat)} {($ Id.VSub_DollarName '$sorted')})
                            (C {(xargs)} {(-n)} {(1)} {(--)} {(echo)} {($ Id.VSub_DollarName '$fields')})
                          ]
                          negated: F
                        )
                      ]
                    )
                )
              ]
              negated: F
            )
          ]
        )
    )
    (C {(readonly)} 
      {(Id.Lit_VarLike 'HEADER=') 
        (SQ <'status,elapsed_secs,host_name,host_hash,shell_name,shell_hash,path'>)
      }
    )
    (C {(readonly)} {(Id.Lit_VarLike 'NUM_COLUMNS=') (6)})
    (command.ShFunction
      name: measure
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(Id.Lit_VarLike 'provenance=') ($ Id.VSub_Number '$1')})
            (C {(local)} 
              {(Id.Lit_VarLike 'raw_dir=') 
                (braced_var_sub
                  token: <Id.VSub_Number 2>
                  suffix_op: 
                    (suffix_op.Unary
                      op_id: Id.VTest_ColonHyphen
                      arg_word: {($ Id.VSub_DollarName '$BASE_DIR') (Id.Lit_Slash /) (raw)}
                    )
                )
              }
            )
            (C {(local)} 
              {(Id.Lit_VarLike 'name=') 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  command_list: 
                    (command.CommandList
                      children: [(C {(basename)} {($ Id.VSub_DollarName '$provenance')})]
                    )
                )
              }
            )
            (C {(local)} 
              {(Id.Lit_VarLike 'prefix=') 
                (braced_var_sub
                  token: <Id.VSub_Name name>
                  suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{(.provenance.txt)})
                )
              }
            )
            (C {(local)} 
              {(Id.Lit_VarLike 'times_out=') 
                (DQ ($ Id.VSub_DollarName '$raw_dir') (/) ($ Id.VSub_DollarName '$prefix') (.times.csv))
              }
            )
            (C {(local)} 
              {(Id.Lit_VarLike 'lines_out=') 
                (DQ ($ Id.VSub_DollarName '$raw_dir') (/) ($ Id.VSub_DollarName '$prefix') (.lines.csv))
              }
            )
            (C {(mkdir)} {(-p)} 
              (word.BracedTree
                parts: [
                  ($ Id.VSub_DollarName '$BASE_DIR')
                  (/)
                  (word_part.BracedTuple words:[{(tmp)} {(raw)} {(stage1)}])
                ]
              ) {($ Id.VSub_DollarName '$raw_dir')}
            )
            (C {(write-sorted-manifest)} {(SQ )} {($ Id.VSub_DollarName '$lines_out')})
            (C {(local)} {(Id.Lit_VarLike 'sorted=') ($ Id.VSub_DollarName '$SORTED')})
            (command.Simple
              words: [{(echo)} {($ Id.VSub_DollarName '$HEADER')}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$times_out')}
                )
              ]
            )
            (C {(local)} {(Id.Lit_VarLike 'tasks=') ($ Id.VSub_DollarName '$BASE_DIR') (/tasks.txt)})
            (command.Simple
              words: [{(print-tasks)} {($ Id.VSub_DollarName '$provenance')}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$tasks')}
                )
              ]
            )
            (command.Pipeline
              children: [
                (C {(cat)} {($ Id.VSub_DollarName '$tasks')})
                (C {(xargs)} {(-n)} {($ Id.VSub_DollarName '$NUM_COLUMNS')} {(--)} 
                  {($ Id.VSub_Number '$0')} {(parser-task)} {($ Id.VSub_DollarName '$raw_dir')}
                )
              ]
              negated: F
            )
            (C {(cp)} {(-v)} {($ Id.VSub_DollarName '$provenance')} {($ Id.VSub_DollarName '$raw_dir')})
          ]
        )
    )
    (command.ShFunction
      name: fake-other-host
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Id.Lit_VarLike 'dir=') 
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: 
                    (suffix_op.Unary
                      op_id: Id.VTest_ColonHyphen
                      arg_word: {(_tmp) (Id.Lit_Slash /) (osh-parser) (Id.Lit_Slash /) (raw)}
                    )
                )
              }
            )
            (command.ForEach
              iter_name: entry
              iter_words: [{($ Id.VSub_DollarName '$dir') (/lisa) (Id.Lit_Star '*')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {(local)} 
                      {(Id.Lit_VarLike 'fake=') 
                        (braced_var_sub
                          token: <Id.VSub_Name entry>
                          suffix_op: 
                            (suffix_op.PatSub
                              pat: {(lisa)}
                              replace: {(flanders)}
                              replace_mode: Id.Undefined_Tok
                            )
                        )
                      }
                    )
                    (C {(mv)} {(-v)} {($ Id.VSub_DollarName '$entry')} {($ Id.VSub_DollarName '$fake')})
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: (C {(test)} {(-f)} {($ Id.VSub_DollarName '$fake')})
                              terminator: <Id.Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(sed)} {(-i)} {(SQ <s/lisa/flanders/g>)} {($ Id.VSub_DollarName '$fake')})
                          ]
                          spids: [807 816]
                        )
                      ]
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: stage1
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Id.Lit_VarLike 'raw_dir=') 
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: 
                    (suffix_op.Unary
                      op_id: Id.VTest_ColonHyphen
                      arg_word: {($ Id.VSub_DollarName '$BASE_DIR') (Id.Lit_Slash /) (raw)}
                    )
                )
              }
            )
            (C {(local)} {(Id.Lit_VarLike 'out=') ($ Id.VSub_DollarName '$BASE_DIR') (/stage1)})
            (C {(mkdir)} {(-p)} {($ Id.VSub_DollarName '$out')})
            (C {(local)} 
              {(Id.Lit_VarLike 'vm_csv=') ($ Id.VSub_DollarName '$out') (/virtual-memory.csv)}
            )
            (C {(local)} {(-a)} 
              {(Id.Lit_VarLike 'x=') 
                (sh_array_literal
                  left: <Id.Op_LParen '('>
                  words: [
                    {($ Id.VSub_DollarName '$raw_dir') (/flanders.) (Id.Lit_Star '*') (.virtual-memory)}
                  ]
                )
              }
            )
            (C {(local)} {(-a)} 
              {(Id.Lit_VarLike 'y=') 
                (sh_array_literal
                  left: <Id.Op_LParen '('>
                  words: [
                    {($ Id.VSub_DollarName '$raw_dir') (/lisa.) (Id.Lit_Star '*') (.virtual-memory)}
                  ]
                )
              }
            )
            (command.Simple
              words: [
                {(benchmarks/virtual_memory.py)}
                {(osh-parser)}
                {
                  (braced_var_sub
                    token: <Id.VSub_Name x>
                    bracket_op: 
                      (bracket_op.ArrayIndex
                        expr: 
                          (arith_expr.Unary
                            op_id: Id.Node_UnaryMinus
                            child: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)})
                          )
                      )
                  )
                }
                {
                  (braced_var_sub
                    token: <Id.VSub_Name y>
                    bracket_op: 
                      (bracket_op.ArrayIndex
                        expr: 
                          (arith_expr.Unary
                            op_id: Id.Node_UnaryMinus
                            child: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)})
                          )
                      )
                  )
                }
              ]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$vm_csv')}
                )
              ]
            )
            (C {(local)} {(Id.Lit_VarLike 'times_csv=') ($ Id.VSub_DollarName '$out') (/times.csv)})
            (C {(local)} {(-a)} 
              {(Id.Lit_VarLike 'a=') 
                (sh_array_literal
                  left: <Id.Op_LParen '('>
                  words: [
                    {($ Id.VSub_DollarName '$raw_dir') (/flanders.) (Id.Lit_Star '*') (.times.csv)}
                  ]
                )
              }
            )
            (C {(local)} {(-a)} 
              {(Id.Lit_VarLike 'b=') 
                (sh_array_literal
                  left: <Id.Op_LParen '('>
                  words: [{($ Id.VSub_DollarName '$raw_dir') (/lisa.) (Id.Lit_Star '*') (.times.csv)}]
                )
              }
            )
            (command.Simple
              words: [
                {(csv-concat)}
                {
                  (braced_var_sub
                    token: <Id.VSub_Name a>
                    bracket_op: 
                      (bracket_op.ArrayIndex
                        expr: 
                          (arith_expr.Unary
                            op_id: Id.Node_UnaryMinus
                            child: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)})
                          )
                      )
                  )
                }
                {
                  (braced_var_sub
                    token: <Id.VSub_Name b>
                    bracket_op: 
                      (bracket_op.ArrayIndex
                        expr: 
                          (arith_expr.Unary
                            op_id: Id.Node_UnaryMinus
                            child: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)})
                          )
                      )
                  )
                }
              ]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$times_csv')}
                )
              ]
            )
            (C {(local)} 
              {(Id.Lit_VarLike 'raw_data_csv=') ($ Id.VSub_DollarName '$out') (/raw-data.csv)}
            )
            (command.BraceGroup
              children: [
                (C {(echo)} {(SQ <path>)})
                (C {(echo)} 
                  {
                    (braced_var_sub
                      token: <Id.VSub_Name a>
                      bracket_op: 
                        (bracket_op.ArrayIndex
                          expr: 
                            (arith_expr.Unary
                              op_id: Id.Node_UnaryMinus
                              child: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)})
                            )
                        )
                    )
                  }
                )
                (C {(echo)} 
                  {
                    (braced_var_sub
                      token: <Id.VSub_Name b>
                      bracket_op: 
                        (bracket_op.ArrayIndex
                          expr: 
                            (arith_expr.Unary
                              op_id: Id.Node_UnaryMinus
                              child: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)})
                            )
                        )
                    )
                  }
                )
              ]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$raw_data_csv')}
                )
              ]
            )
            (C {(local)} {(Id.Lit_VarLike 'lines_csv=') ($ Id.VSub_DollarName '$out') (/lines.csv)})
            (C {(local)} {(-a)} 
              {(Id.Lit_VarLike 'c=') 
                (sh_array_literal
                  left: <Id.Op_LParen '('>
                  words: [
                    {($ Id.VSub_DollarName '$raw_dir') (/flanders.) (Id.Lit_Star '*') (.lines.csv)}
                  ]
                )
              }
            )
            (C {(local)} {(-a)} 
              {(Id.Lit_VarLike 'd=') 
                (sh_array_literal
                  left: <Id.Op_LParen '('>
                  words: [{($ Id.VSub_DollarName '$raw_dir') (/lisa.) (Id.Lit_Star '*') (.lines.csv)}]
                )
              }
            )
            (C {(local)} 
              {(Id.Lit_VarLike 'left=') 
                (braced_var_sub
                  token: <Id.VSub_Name c>
                  bracket_op: 
                    (bracket_op.ArrayIndex
                      expr: 
                        (arith_expr.Unary
                          op_id: Id.Node_UnaryMinus
                          child: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)})
                        )
                    )
                )
              }
            )
            (C {(local)} 
              {(Id.Lit_VarLike 'right=') 
                (braced_var_sub
                  token: <Id.VSub_Name d>
                  bracket_op: 
                    (bracket_op.ArrayIndex
                      expr: 
                        (arith_expr.Unary
                          op_id: Id.Node_UnaryMinus
                          child: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)})
                        )
                    )
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          children: [
                            (C {(diff)} {($ Id.VSub_DollarName '$left')} 
                              {($ Id.VSub_DollarName '$right')}
                            )
                          ]
                          negated: T
                        )
                      terminator: <Id.Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(die)} 
                      {
                        (DQ ('Benchmarks were run on different files (') 
                          ($ Id.VSub_DollarName '$left') (' != ') ($ Id.VSub_DollarName '$right') (')')
                        )
                      }
                    )
                  ]
                  spids: [1116 1127]
                )
              ]
            )
            (command.Simple
              words: [{(cat)} {($ Id.VSub_DollarName '$left')}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$lines_csv')}
                )
              ]
            )
            (C {(head)} {($ Id.VSub_DollarName '$out') (/) (Id.Lit_Star '*')})
            (C {(wc)} {(-l)} {($ Id.VSub_DollarName '$out') (/) (Id.Lit_Star '*')})
          ]
        )
    )
    (command.ShFunction
      name: print-report
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(Id.Lit_VarLike 'in_dir=') ($ Id.VSub_Number '$1')})
            (C {(local)} {(Id.Lit_VarLike 'base_url=') (SQ <../../web>)})
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {(EOF)}
                  here_end_span_id: 1290
                  stdin_parts: [
                    ('<!DOCTYPE html>\n')
                    ('<html>\n')
                    ('  <head>\n')
                    ('    <title>OSH Parser Performance</title>\n')
                    ('    <script type=')
                    (Id.Right_DoubleQuote '"')
                    (text/javascript)
                    (Id.Right_DoubleQuote '"')
                    (' src=')
                    (Id.Right_DoubleQuote '"')
                    ($ Id.VSub_DollarName '$base_url')
                    (/table/table-sort.js)
                    (Id.Right_DoubleQuote '"')
                    ('></script>\n')
                    ('    <link rel=')
                    (Id.Right_DoubleQuote '"')
                    (stylesheet)
                    (Id.Right_DoubleQuote '"')
                    (' type=')
                    (Id.Right_DoubleQuote '"')
                    (text/css)
                    (Id.Right_DoubleQuote '"')
                    (' href=')
                    (Id.Right_DoubleQuote '"')
                    ($ Id.VSub_DollarName '$base_url')
                    (/table/table-sort.css)
                    (Id.Right_DoubleQuote '"')
                    (' />\n')
                    ('    <link rel=')
                    (Id.Right_DoubleQuote '"')
                    (stylesheet)
                    (Id.Right_DoubleQuote '"')
                    (' type=')
                    (Id.Right_DoubleQuote '"')
                    (text/css)
                    (Id.Right_DoubleQuote '"')
                    (' href=')
                    (Id.Right_DoubleQuote '"')
                    ($ Id.VSub_DollarName '$base_url')
                    (/benchmarks.css)
                    (Id.Right_DoubleQuote '"')
                    (' />\n')
                    ('\n')
                    ('  </head>\n')
                    ('  <body>\n')
                    ('    <p id=')
                    (Id.Right_DoubleQuote '"')
                    (home-link)
                    (Id.Right_DoubleQuote '"')
                    ('>\n')
                    ('      <a href=')
                    (Id.Right_DoubleQuote '"')
                    (/)
                    (Id.Right_DoubleQuote '"')
                    ('>oilshell.org</a>\n')
                    ('    </p>\n')
                    ('    <h2>OSH Parser Performance</h2>\n')
                    ('\n')
                    ('    <p>We run <code>')
                    (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                    ('sh -n ')
                    (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                    ('file</code> for various files under various\n')
                    ('    shells.  This means that shell startup time is included in the\n')
                    ('    elapsed time measurements, but long files are chosen to minimize its\n')
                    ('    effect.</p>\n')
                    ('\n')
                    ('    <h3>Parse Time Summary</h3>\n')
                  ]
                )
              ]
            )
            (C {(csv2html)} {($ Id.VSub_DollarName '$in_dir') (/summary.csv)})
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {(EOF)}
                  here_end_span_id: 1309
                  stdin_parts: [
                    ('    <h3>Memory Used to Parse</h3>\n')
                    ('\n')
                    ('    <p>Running under <code>osh-ovm</code>.  Memory usage is measured in MB\n')
                    ('    (powers of 10), not MiB (powers of 2).</p>\n')
                  ]
                )
              ]
            )
            (C {(csv2html)} {($ Id.VSub_DollarName '$in_dir') (/virtual-memory.csv)})
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {(EOF)}
                  here_end_span_id: 1326
                  stdin_parts: [('\n') ('    <h3>Shell and Host Details</h3>\n')]
                )
              ]
            )
            (C {(csv2html)} {($ Id.VSub_DollarName '$in_dir') (/shells.csv)})
            (C {(csv2html)} {($ Id.VSub_DollarName '$in_dir') (/hosts.csv)})
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {(EOF)}
                  here_end_span_id: 1347
                  stdin_parts: [('    <h3>Raw Data</h3>\n')]
                )
              ]
            )
            (C {(csv2html)} {($ Id.VSub_DollarName '$in_dir') (/raw-data.csv)})
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {(EOF)}
                  here_end_span_id: 1364
                  stdin_parts: [
                    ('    <h3>Parse Time Breakdown by File</h3>\n')
                    ('\n')
                    ('    <h4>Elasped Time in milliseconds</h4>\n')
                  ]
                )
              ]
            )
            (C {(csv2html)} {($ Id.VSub_DollarName '$in_dir') (/elapsed.csv)})
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {(EOF)}
                  here_end_span_id: 1380
                  stdin_parts: [('\n') ('    <h4>Parsing Rate in lines/millisecond</h4>\n')]
                )
              ]
            )
            (C {(csv2html)} {($ Id.VSub_DollarName '$in_dir') (/rate.csv)})
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {(EOF)}
                  here_end_span_id: 1396
                  stdin_parts: [('  </body>\n') ('</html>\n')]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: time-test
      body: 
        (command.BraceGroup
          children: [
            (C {(benchmarks/time.py)} {(--field)} {(bash)} {(--field)} {(foo.txt)} {(--output)} 
              {(_tmp/bench.csv)} {(sleep)} {(0.123)}
            )
            (C {(cat)} {(_tmp/bench.csv)})
          ]
        )
    )
    (C {(DQ ($ Id.VSub_At '$@'))})
  ]
)