(command.CommandList
  children: [
    (command.If
      arms: [
        (if_arm
          cond: [
            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Pound '$#'))} {<-ne>} {<3>} {<Id.Lit_RBracket ']'>})
          ]
          action: [
            (C {<echo>} 
              {
                (DQ <'Usage: '> ($ Id.VSub_Number '$0') 
                  <' dart_binary benchmark_directory output_directory'>
                )
              }
            )
            (C {<echo>} 
              {
                (DQ <'Example: '> ($ Id.VSub_Number '$0') 
                  <' out/ReleaseIA32/dart ../golem4/benchmarks /tmp/bmu'>
                )
              }
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [23 37]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DART_BIN)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$1')}
          spids: [65]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:BENCH_DIR)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$2')}
          spids: [68]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:OUT_DIR)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$3')}
          spids: [71]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:VERBOSE_GC_TO_BMU)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                command_list: 
                  (command.CommandList
                    children: [(C {<dirname>} {(DQ ($ Id.VSub_Number '$0'))})]
                  )
              ) </verbose_gc_to_bmu.dart>
            }
          spids: [75]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:INDEX_FILE)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$OUT_DIR') </index.html>}
          spids: [85]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TMP)
          op: assign_op.Equal
          rhs: {</tmp/bmu_benchmark_gallery>}
          spids: [89]
        )
      ]
    )
    (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$OUT_DIR')})
    (command.Simple
      words: [{<echo>} {(DQ <'<html><body>'>)}]
      redirects: [
        (redir.Redir
          op: <Id.Redir_Great '>'>
          fd: -1
          arg_word: {($ Id.VSub_DollarName '$INDEX_FILE')}
        )
      ]
    )
    (command.Simple
      words: [{($ Id.VSub_DollarName '$DART_BIN')} {<--version>}]
      redirects: [
        (redir.Redir
          op: <Id.Redir_DGreat '2>>'>
          fd: 2
          arg_word: {($ Id.VSub_DollarName '$INDEX_FILE')}
        )
      ]
    )
    (command.Simple
      words: [{<echo>} {(DQ <'<br>'>)}]
      redirects: [
        (redir.Redir
          op: <Id.Redir_DGreat '>>'>
          fd: -1
          arg_word: {($ Id.VSub_DollarName '$INDEX_FILE')}
        )
      ]
    )
    (command.ForEach
      iter_name: NAME
      iter_words: [
        {
          (command_sub
            left_token: <Id.Left_Backtick '`'>
            command_list: 
              (command.CommandList
                children: [(C {<ls>} {($ Id.VSub_DollarName '$BENCH_DIR')})]
              )
          )
        }
      ]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.Simple
                  words: [
                    {($ Id.VSub_DollarName '$DART_BIN')}
                    {<--verbose_gc>}
                    {($ Id.VSub_DollarName '$BENCH_DIR') </> ($ Id.VSub_DollarName '$NAME') </dart/> 
                      ($ Id.VSub_DollarName '$NAME') <.dart>
                    }
                  ]
                  redirects: [
                    (redir.Redir
                      op: <Id.Redir_Great '2>'>
                      fd: 2
                      arg_word: {($ Id.VSub_DollarName '$TMP') <.gclog>}
                    )
                  ]
                )
                (command.Simple
                  words: [
                    {($ Id.VSub_DollarName '$DART_BIN')}
                    {($ Id.VSub_DollarName '$VERBOSE_GC_TO_BMU')}
                  ]
                  redirects: [
                    (redir.Redir
                      op: <Id.Redir_Less '<'>
                      fd: -1
                      arg_word: {($ Id.VSub_DollarName '$TMP') <.gclog>}
                    )
                    (redir.Redir
                      op: <Id.Redir_Great '>'>
                      fd: -1
                      arg_word: {($ Id.VSub_DollarName '$TMP') <.dat>}
                    )
                  ]
                )
                (C {<gnuplot>} {<-e>} 
                  {
                    (DQ <"set term png; set output '"> ($ Id.VSub_DollarName '$TMP') 
                      <".png'; set title '"> ($ Id.VSub_DollarName '$NAME') 
                      <
"'; set ylabel 'BMU'; set xlabel 'Window size (ms)'; unset key; set yr [0:1]; set logscale x; plot '"
                      > ($ Id.VSub_DollarName '$TMP') <".dat' with linespoints">
                    )
                  }
                )
                (C {<mv>} {<-f>} {($ Id.VSub_DollarName '$TMP') <.png>} 
                  {($ Id.VSub_DollarName '$OUT_DIR') </> ($ Id.VSub_DollarName '$NAME') <.png>}
                )
                (C {<mv>} {<-f>} {($ Id.VSub_DollarName '$TMP') <.gclog>} 
                  {($ Id.VSub_DollarName '$OUT_DIR') </> ($ Id.VSub_DollarName '$NAME') <.txt>}
                )
                (command.Simple
                  words: [
                    {<echo>}
                    {
                      (DQ <"<a href='"> ($ Id.VSub_DollarName '$NAME') <".txt'><img src='"> 
                        ($ Id.VSub_DollarName '$NAME') <".png'></a>">
                      )
                    }
                  ]
                  redirects: [
                    (redir.Redir
                      op: <Id.Redir_DGreat '>>'>
                      fd: -1
                      arg_word: {($ Id.VSub_DollarName '$INDEX_FILE')}
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.Simple
      words: [{<echo>} {(DQ <'</body></html>'>)}]
      redirects: [
        (redir.Redir
          op: <Id.Redir_DGreat '>>'>
          fd: -1
          arg_word: {($ Id.VSub_DollarName '$INDEX_FILE')}
        )
      ]
    )
  ]
)