(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: 16777215
                            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: T
                            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: [16777215 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]
    )
  ]
)