(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:expected)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (SimpleCommand
                        words: [{(cat)}]
                        redirects: [
                          (HereDoc
                            op_id: Redir_DLess
                            fd: -1
                            body: 
                              {
                                (
"(\"#!/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"
                                )
                              }
                            do_expansion: False
                            here_end: EOF
                            was_filled: True
                            spids: [8]
                          )
                        ]
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [4 14]
              )
            }
          spids: [3]
        )
      ]
      spids: [3]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:actual)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (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\")))))"
                            >
                          )
                        }
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [18 26]
              )
            }
          spids: [17]
        )
      ]
      spids: [17]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobDEqual
                      left: {(DQ ($ VSub_Name "$expected"))}
                      right: {(DQ ($ VSub_Name "$actual"))}
                    )
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [(C {(echo)} {(DQ ("test 1/1 passed"))})]
          spids: [-1 46]
        )
      ]
      else_action: [
        (C {(echo)} {(DQ ("test 1/1 failed"))})
        (C {(echo)} {(DQ ("EXPECTED: ") ($ VSub_Name "$expected"))})
        (C {(echo)} {(DQ ("RECEIVED: ") ($ VSub_Name "$actual"))})
      ]
      spids: [55 80]
    )
  ]
)