(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:expected)
          op: Equal
          rhs: 
            {
              (command_sub
                left_token: <Left_DollarParen '$('>
                command_list: 
                  (command.CommandList
                    children: [
                      (command.Simple
                        words: [{(cat)}]
                        redirects: [
                          (redir.HereDoc
                            op: <Redir_DLess '<<'>
                            fd: 16777215
                            here_begin: {(DQ (EOF))}
                            here_end_span_id: 15
                            stdin_parts: [
                              (
'("#!/usr/bin/env bash" "  echo \\"bash >= 4.0 required\\" >&2" "#!/bin/bash" "    \\"how do we replace bash?\\")" "    (title \\"gherkin - a lisp1 written in bash4\\")" "    \\"  - no real array in bash\\"" "    \\"Aron Griffis: bash pro tips\\"")\n'
                              )
                            ]
                          )
                        ]
                      )
                    ]
                  )
              )
            }
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:actual)
          op: Equal
          rhs: 
            {
              (command_sub
                left_token: <Left_DollarParen '$('>
                command_list: 
                  (command.CommandList
                    children: [
                      (C {(./gherkin)} {(-e)} 
                        {
                          (SQ 
                            <
'(load-file "core") (sh (str "grep -h bash " (join " " (remove (fn [x] (or (eq? "simple_test.sh" x) (eq? "README.md" x))) (sh "ls")))))'
                            >
                          )
                        }
                      )
                    ]
                  )
              )
            }
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: BoolBinary_GlobDEqual
                      left: {(DQ ($ VSub_DollarName '$expected'))}
                      right: {(DQ ($ VSub_DollarName '$actual'))}
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(echo)} {(DQ ('test 1/1 passed'))})]
        )
      ]
      else_action: [
        (C {(echo)} {(DQ ('test 1/1 failed'))})
        (C {(echo)} {(DQ ('EXPECTED: ') ($ VSub_DollarName '$expected'))})
        (C {(echo)} {(DQ ('RECEIVED: ') ($ VSub_DollarName '$actual'))})
      ]
    )
  ]
)