(CommandList
  children: [
    (C {(cd)} 
      {
        (BracedVarSub
          token: <VSub_Number 0>
          suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')})
          spids: [6 11]
        )
      }
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:INPUT)
          op: Equal
          rhs: {(./solidus/string_with_solidus.json)}
          spids: [14]
        )
      ]
      spids: [14]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:OUTPUT_ESCAPED)
          op: Equal
          rhs: {(./solidus/string_with_solidus.with-escaping.parsed)}
          spids: [17]
        )
      ]
      spids: [17]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:OUTPUT_WITHOUT_ESCAPING)
          op: Equal
          rhs: {(./solidus/string_with_solidus.no-escaping.parsed)}
          spids: [20]
        )
      ]
      spids: [20]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:FAILS) op:Equal rhs:{(0)} spids:[24])]
      spids: [24]
    )
    (C {(echo)} {(DQ (1..2))})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (Pipeline
                  children: [
                    (SimpleCommand
                      words: [{(../JSON.sh)}]
                      redirects: [
                        (Redir
                          op: <Redir_Less '<'>
                          fd: 16777215
                          arg_word: {($ VSub_Name '$INPUT')}
                        )
                      ]
                    )
                    (C {(diff)} {(-u)} {(-)} {(${ VSub_Name OUTPUT_ESCAPED)})
                  ]
                  negated: T
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} 
              {(DQ ('not ok - JSON.sh run without -s option should leave solidus escaping intact'))}
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:FAILS)
                  op: Equal
                  rhs: 
                    {
                      (ArithSubPart
                        anode: 
                          (ArithBinary
                            op_id: Arith_Plus
                            left: (ArithVarRef name:FAILS)
                            right: (ArithWord w:{(Lit_Digits 1)})
                          )
                        spids: [68 75]
                      )
                    }
                  spids: [67]
                )
              ]
              spids: [67]
            )
          ]
          spids: [16777215 57]
        )
      ]
      else_action: [
        (C {(echo)} {(DQ ('ok ') ($ VSub_Name '$i') (' - solidus escaping was left intact'))})
      ]
      spids: [77 88]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (Pipeline
                  children: [
                    (SimpleCommand
                      words: [{(../JSON.sh)} {(-s)}]
                      redirects: [
                        (Redir
                          op: <Redir_Less '<'>
                          fd: 16777215
                          arg_word: {($ VSub_Name '$INPUT')}
                        )
                      ]
                    )
                    (C {(diff)} {(-u)} {(-)} {(${ VSub_Name OUTPUT_WITHOUT_ESCAPING)})
                  ]
                  negated: T
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ('not ok - JSON.sh run with -s option should remove solidus escaping'))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:FAILS)
                  op: Equal
                  rhs: 
                    {
                      (ArithSubPart
                        anode: 
                          (ArithBinary
                            op_id: Arith_Plus
                            left: (ArithVarRef name:FAILS)
                            right: (ArithWord w:{(Lit_Digits 1)})
                          )
                        spids: [126 131]
                      )
                    }
                  spids: [125]
                )
              ]
              spids: [125]
            )
          ]
          spids: [16777215 115]
        )
      ]
      else_action: [
        (C {(echo)} {(DQ ('ok ') ($ VSub_Name '$i') (' - solidus escaping has been removed'))})
      ]
      spids: [133 144]
    )
    (C {(echo)} {(DQ ($ VSub_Name '$FAILS') (' test(s) failed'))})
    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{($ VSub_Name '$FAILS')})
  ]
)