(command.CommandList
  children: [
    (command.Simple
      blame_tok: <set>
      more_env: []
      words: [{<set>} {<-o>} {<nounset>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <set>
      more_env: []
      words: [{<set>} {<-o>} {<pipefail>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <set>
      more_env: []
      words: [{<set>} {<-o>} {<errexit>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <source>
      more_env: []
      words: [{<source>} {<'test/common.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.ShFunction
      name_tok: <_spec-manifest>
      name: _spec-manifest
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.ForEach
                  keyword: <Id.KW_For for>
                  iter_names: [t]
                  iterable: (for_iter.Words words:[{<'spec/'> <Id.Lit_Star '*'> <.test.sh>}])
                  semi_tok: <Id.Op_Semi _>
                  body: 
                    (command.DoGroup
                      left: <Id.KW_Do do>
                      children: [
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {($ Id.VSub_DollarName t)}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
                (command.Simple
                  blame_tok: <gawk>
                  more_env: []
                  words: [
                    {<gawk>}
                    {
                      (SQ <'\n'> <'  match($0, "spec/(.*)[.]test.sh", array) {\n'> 
                        <'    name = array[1]\n'> <'    # Nothing passing here\n'> <'    if (name == "extended-glob") next;\n'> <'\n'> 
                        <'    # This was meant for ANTLR.\n'> <'    if (name == "shell-grammar") next;\n'> <'\n'> <'    # Just a demo\n'> 
                        <'    if (name == "blog-other1") next;\n'> <'\n'> <'    print name\n'> <'  }\n'> <'  '>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <manifest>
      name: manifest
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <_spec-manifest>
              more_env: []
              words: [{<_spec-manifest>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'_tmp/spec/MANIFEST.txt'>}
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <run-cases>
      name: run-cases
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'spec_name='> ($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <run-task-with-status>
              more_env: []
              words: [
                {<run-task-with-status>}
                {<'_tmp/spec/'> (${ Id.VSub_Name spec_name) <.task.txt>}
                {<'test/spec.sh'>}
                {($ Id.VSub_DollarName spec_name)}
                {<--format>}
                {<html>}
                {<--stats-file>}
                {<'_tmp/spec/'> (${ Id.VSub_Name spec_name) <.stats.txt>}
                {<--stats-template>}
                {
                  (SQ 
                    <
'%(num_cases)d %(osh_num_passed)d %(osh_num_failed)d %(osh_failures_allowed)d %(osh_ALT_delta)d'
                    >
                  )
                }
              ]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'_tmp/spec/'> (${ Id.VSub_Name spec_name) <.html>}
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <readonly>
      more_env: []
      words: [{<readonly>} {<Id.Lit_VarLike 'NUM_TASKS='> <400>}]
      redirects: []
      do_fork: T
    )
    (command.ShFunction
      name_tok: <_html-summary>
      name: _html-summary
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'<!DOCTYPE html>\n'>
                        <'<html>\n'>
                        <'  <head>\n'>
                        <'    <link href='>
                        <Id.Right_DoubleQuote '"'>
                        <'../../web/spec-tests.css'>
                        <Id.Right_DoubleQuote '"'>
                        <' rel='>
                        <Id.Right_DoubleQuote '"'>
                        <stylesheet>
                        <Id.Right_DoubleQuote '"'>
                        <'>\n'>
                        <'  </head>\n'>
                        <'  <body>\n'>
                        <'\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'>
                        <'\n'>
                        <'<h1>Spec Test Results Summary</h1>\n'>
                        <'\n'>
                        <'<table>\n'>
                        <'  <thead>\n'>
                        <'    <tr>\n'>
                        <'      <td>name</td> <td>Exit Code</td> <td>Elapsed Seconds</td>\n'>
                        <'      <td># cases</td> <td>osh # passed</td> <td>osh # failed</td>\n'>
                        <'      <td>osh failures allowed</td>\n'>
                        <'      <td>osh ALT delta</td>\n'>
                        <'    </tr>\n'>
                        <'  </thead>\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <head>
                  more_env: []
                  words: [{<head>} {<-n>} {($ Id.VSub_DollarName NUM_TASKS)} {<'_tmp/spec/MANIFEST.txt'>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <awk>
                  more_env: []
                  words: [
                    {<awk>}
                    {
                      (SQ <'\n'> <'  # Awk problem: getline errors are ignored by default!\n'> 
                        <'  function error(path) {\n'> <'    print "Error reading line from file: " path > "/dev/stderr"\n'> <'    exit(1)\n'> <'  }\n'> <'\n'> 
                        <'  {\n'> <'    spec_name = $0\n'> <'\n'> <'    # Read from the task files\n'> 
                        <'    path = ( "_tmp/spec/" spec_name ".task.txt" )\n'> <'    n = getline < path\n'> <'    if (n != 1) {\n'> <'      error(path)\n'> <'    }\n'> 
                        <'    status = $1\n'> <'    wall_secs = $2\n'> <'\n'> <'    path = ( "_tmp/spec/" spec_name ".stats.txt" )\n'> 
                        <'    n = getline < path\n'> <'    if (n != 1) {\n'> <'      error(path)\n'> <'    }\n'> <'    num_cases = $1\n'> 
                        <'    osh_num_passed = $2\n'> <'    osh_num_failed = $3\n'> <'    osh_failures_allowed = $4\n'> <'    osh_ALT_delta = $5\n'> <'\n'> 
                        <'    sum_status += status\n'> <'    sum_wall_secs += wall_secs\n'> <'    sum_num_cases += num_cases\n'> 
                        <'    sum_osh_num_passed += osh_num_passed\n'> <'    sum_osh_num_failed += osh_num_failed\n'> 
                        <'    sum_osh_failures_allowed += osh_failures_allowed\n'> <'    sum_osh_ALT_delta += osh_ALT_delta\n'> <'    num_rows += 1\n'> <'\n'> <'    # For the console\n'> 
                        <'    if (status == 0) {\n'> <'      num_passed += 1\n'> <'    } else {\n'> <'      num_failed += 1\n'> 
                        <'      print spec_name " failed with status " status > "/dev/stderr"\n'> <'    }\n'> <'\n'> <'    if (status != 0) {\n'> <'      css_class = "failed"\n'> 
                        <'    } else if (osh_num_failed != 0) {\n'> <'      css_class = "osh-allow-fail"\n'> <'    } else if (osh_num_passed != 0) {\n'> 
                        <'      css_class = "osh-pass"\n'> <'    } else {\n'> <'      css_class = ""\n'> <'    }\n'> <'    print "<tr class=" css_class ">"\n'> 
                        <'    print "<td><a href=" spec_name ".html>" spec_name "</a></td>"\n'> <'    print "<td>" status "</td>"\n'> <'    print "<td>" wall_secs "</td>"\n'> 
                        <'    print "<td>" num_cases "</td>"\n'> <'    print "<td>" osh_num_passed "</td>"\n'> <'    print "<td>" osh_num_failed "</td>"\n'> 
                        <'    print "<td>" osh_failures_allowed "</td>"\n'> <'    print "<td>" osh_ALT_delta "</td>"\n'> <'    print "</tr>"\n'> <'  }\n'> <'\n'> <'  END {\n'> 
                        <'    print "<tfoot>"\n'> <'    print "<tr>"\n'> <'    print "<td>TOTAL (" num_rows " rows) </td>"\n'> 
                        <'    print "<td>" sum_status "</td>"\n'> <'    print "<td>" sum_wall_secs "</td>"\n'> <'    print "<td>" sum_num_cases "</td>"\n'> 
                        <'    print "<td>" sum_osh_num_passed "</td>"\n'> <'    print "<td>" sum_osh_num_failed "</td>"\n'> 
                        <'    print "<td>" sum_osh_failures_allowed "</td>"\n'> <'    print "<td>" sum_osh_ALT_delta "</td>"\n'> <'    print "</tr>"\n'> <'    print "</tfoot>"\n'> 
                        <'\n'> <'    # For the console\n'> <'    print "" > "/dev/stderr"\n'> <'    if (num_failed == 0) {\n'> 
                        <'      print "*** All " num_passed " tests PASSED" > "/dev/stderr"\n'> <'    } else {\n'> <'      print "*** " num_failed " tests FAILED" > "/dev/stderr"\n'> <'  }\n'> 
                        <'  }\n'> <'  '>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'    </table>\n'>
                        <'\n'>
                        <'    <h3>Version Information</h3>\n'>
                        <'    <pre>\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <'test/spec.sh'>
              more_env: []
              words: [{<'test/spec.sh'>} {<version-text>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'    </pre>\n'> <'  </body>\n'> <'</html>\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <html-summary>
      name: html-summary
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <_html-summary>
              more_env: []
              words: [{<_html-summary>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'_tmp/spec/index.html'>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {(DQ <'Results: file://'> ($ Id.VSub_DollarName PWD) <'/_tmp/spec/index.html'>)}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <link-web>
      name: link-web
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <ln>
              more_env: []
              words: [{<ln>} {<-s>} {<-f>} {<--verbose>} {($ Id.VSub_DollarName PWD) <'/web'>} {<_tmp>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_all-parallel>
      name: _all-parallel
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <mkdir>
              more_env: []
              words: [{<mkdir>} {<-p>} {<'_tmp/spec'>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <manifest>
              more_env: []
              words: [{<manifest>}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Pipeline
                  children: [
                    (command.Simple
                      blame_tok: <head>
                      more_env: []
                      words: [
                        {<head>}
                        {<-n>}
                        {($ Id.VSub_DollarName NUM_TASKS)}
                        {<'_tmp/spec/MANIFEST.txt'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <xargs>
                      more_env: []
                      words: [
                        {<xargs>}
                        {<-n>}
                        {<1>}
                        {<-P>}
                        {($ Id.VSub_DollarName JOBS)}
                        {<--verbose>}
                        {<-->}
                        {($ Id.VSub_Number 0)}
                        {<run-cases>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: [<Id.Op_Pipe _>]
                )
                (command.Simple
                  blame_tok: <true>
                  more_env: []
                  words: [{<true>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <all-tests-to-html>
              more_env: []
              words: [{<all-tests-to-html>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <link-web>
              more_env: []
              words: [{<link-web>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <html-summary>
              more_env: []
              words: [{<html-summary>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <all-parallel>
      name: all-parallel
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.TimeBlock
              keyword: <Id.KW_Time time>
              pipeline: 
                (command.Simple
                  blame_tok: <Id.VSub_Number '$0'>
                  more_env: []
                  words: [{($ Id.VSub_Number 0)} {<_all-parallel>}]
                  redirects: []
                  do_fork: T
                )
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <all-serial>
      name: all-serial
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <mkdir>
              more_env: []
              words: [{<mkdir>} {<-p>} {<'_tmp/spec'>}]
              redirects: []
              do_fork: T
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <cat>
                  more_env: []
                  words: [{<cat>} {<'_tmp/spec/MANIFEST.txt'>}]
                  redirects: []
                  do_fork: T
                )
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <read>
                              more_env: []
                              words: [{<read>} {<t>}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      left: <Id.KW_Do do>
                      children: [
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {($ Id.VSub_DollarName t)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <'test/spec.sh'>
                              more_env: []
                              words: [{<'test/spec.sh'>} {($ Id.VSub_DollarName t)} {<--format>} {<html>}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'_tmp/spec/'> (${ Id.VSub_Name t) <.html>}
                                )
                              ]
                              do_fork: T
                            )
                            (BraceGroup
                              left: <Id.Lit_LBrace '{'>
                              children: [
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [{<echo>} {(DQ <FAILED>)}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Exit exit>
                                  arg_word: {<1>}
                                )
                              ]
                              redirects: []
                              right: <Id.Lit_RBrace '}'>
                            )
                          ]
                          ops: [<Id.Op_DPipe _>]
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_test-to-html>
      name: _test-to-html
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'spec_name='> ($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'<!DOCTYPE html>\n'>
                        <'<html>\n'>
                        <'  <head>\n'>
                        <'    <link href='>
                        <Id.Right_DoubleQuote '"'>
                        <'../../web/spec-code.css'>
                        <Id.Right_DoubleQuote '"'>
                        <' rel='>
                        <Id.Right_DoubleQuote '"'>
                        <stylesheet>
                        <Id.Right_DoubleQuote '"'>
                        <'>\n'>
                        <'  </head>\n'>
                        <'  <body>\n'>
                        <'    <table>\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <awk>
              more_env: []
              words: [
                {<awk>}
                {
                  (SQ <'\n'> <'  { \n'> 
                    <
'    # & is the substitution character.  Why is \\\\& a literal backslash instead\n'
                    > <'    # of \\&?  This changed on the gawk between Ubuntu 14.04 and 16.04.\n'> <'\n'> 
                    <'    gsub("&", "\\\\&amp;");\n'> <'    gsub("<", "\\\\&lt;");\n'> <'    gsub(">", "\\\\&gt;");\n'> <'    line_num = NR\n'> <'\n'> 
                    <'    print "<tr>"\n'> <'    print "<td class=num>" line_num "</td>"\n'> <'    if ($0 ~ /^###/) {\n'> 
                    <'      line = "<span class=comm3>" $0 "</span>"\n'> <'    } else if ($0 ~ /^#/) {\n'> <'      line = "<span class=comm1>" $0 "</span>"\n'> 
                    <'    } else {\n'> <'      line = $0\n'> <'    }\n'> <'    print "<td class=line id=L" line_num ">" line "</td>"\n'> 
                    <'    print "</tr>"\n'> <'  }\n'> <'  '>
                  )
                }
              ]
              redirects: [
                (Redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {<'spec/'> (${ Id.VSub_Name spec_name) <.test.sh>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'    </table>\n'> <'  </body>\n'> <'</html>\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test-to-html>
      name: test-to-html
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'spec_name='> ($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <_test-to-html>
              more_env: []
              words: [{<_test-to-html>} {($ Id.VSub_DollarName spec_name)}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'_tmp/spec/'> (${ Id.VSub_Name spec_name) <.test.html>}
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <all-tests-to-html>
      name: all-tests-to-html
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Pipeline
                  children: [
                    (command.Simple
                      blame_tok: <head>
                      more_env: []
                      words: [
                        {<head>}
                        {<-n>}
                        {($ Id.VSub_DollarName NUM_TASKS)}
                        {<'_tmp/spec/MANIFEST.txt'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <xargs>
                      more_env: []
                      words: [
                        {<xargs>}
                        {<-n>}
                        {<1>}
                        {<-P>}
                        {<8>}
                        {<--verbose>}
                        {<-->}
                        {($ Id.VSub_Number 0)}
                        {<test-to-html>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: [<Id.Op_Pipe _>]
                )
                (command.Simple
                  blame_tok: <true>
                  more_env: []
                  words: [{<true>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <test>
                      more_env: []
                      words: [
                        {<test>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <basename>
                                  more_env: []
                                  words: [{<basename>} {($ Id.VSub_Number 0)}]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                        {<Id.Lit_Equals '='>}
                        {(SQ <spec-runner.sh>)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <Id.Left_DoubleQuote '"'>
              more_env: []
              words: [{(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [855 874]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
  ]
)