(CommandList
  children: [
    (C {(set)} {(-eu)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:RUNFILES)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name RUNFILES>
                suffix_op: 
                  (StringUnary
                    op_id: VTest_ColonHyphen
                    arg_word: 
                      {
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [
                                (Sentence
                                  child: 
                                    (C 
                                      {
                                        (CommandSubPart
                                          command_list: 
                                            (CommandList
                                              children: [
                                                (C {(cd)} 
                                                  {
                                                    (CommandSubPart
                                                      command_list: 
                                                        (CommandList
                                                          children: [
                                                            (C {(dirname)} 
                                                              {
                                                                (BracedVarSub
                                                                  token: <VSub_Name BASH_SOURCE>
                                                                  bracket_op: 
                                                                    (ArrayIndex
                                                                      expr: 
                                                                        (ArithWord
                                                                          w: {(Lit_Digits 0)}
                                                                        )
                                                                    )
                                                                  spids: [66 71]
                                                                )
                                                              }
                                                            )
                                                          ]
                                                        )
                                                      left_token: <Left_CommandSub "$(">
                                                      spids: [63 72]
                                                    )
                                                  }
                                                )
                                              ]
                                            )
                                          left_token: <Left_CommandSub "$(">
                                          spids: [60 73]
                                        )
                                      }
                                    )
                                  terminator: <Op_Semi ";">
                                )
                                (C {(pwd)})
                              ]
                            )
                          left_token: <Left_CommandSub "$(">
                          spids: [59 77]
                        )
                      }
                  )
                spids: [56 78]
              )
            }
          spids: [55]
        )
      ]
      spids: [55]
    )
    (C {(source)} {(DQ (${ VSub_Name RUNFILES) (/examples/shell/lib.sh))})
    (FuncDef
      name: test_output
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:OUTPUT)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(showfile)})])
                        left_token: <Left_CommandSub "$(">
                        spids: [99 101]
                      )
                    }
                  spids: [98]
                )
              ]
              spids: [98]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:EXPECTED_OUTPUT)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(cat)} 
                                {(DQ (${ VSub_Name RUNFILES) (/examples/shell/data/test_file.txt))}
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [105 114]
                      )
                    }
                  spids: [104]
                )
              ]
              spids: [104]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other "[")} {(DQ (${ VSub_Name OUTPUT))} 
                          {(KW_Bang "!") (Lit_Other "=")} {(DQ (${ VSub_Name EXPECTED_OUTPUT))} {(Lit_Other "]")}
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [(C {(exit)} {(1)})]
                  spids: [-1 140]
                )
              ]
              spids: [-1 152]
            )
          ]
          spids: [95]
        )
      spids: [91 94]
    )
    (C {(test_output)})
  ]
)