(CommandList
  children: [
    (Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (LhsName name:reset)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(tput)} {(sgr0)})])
                left_token: <Left_CommandSub '$('>
                spids: [51 55]
              )
            }
          spids: [50]
        )
      ]
      spids: [48]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (LhsName name:bold)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(tput)} {(bold)})])
                left_token: <Left_CommandSub '$('>
                spids: [60 64]
              )
            }
          spids: [59]
        )
      ]
      spids: [57]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (LhsName name:black)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(tput)} {(setaf)} {(0)})])
                left_token: <Left_CommandSub '$('>
                spids: [69 75]
              )
            }
          spids: [68]
        )
      ]
      spids: [66]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (LhsName name:red)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(tput)} {(setaf)} {(1)})])
                left_token: <Left_CommandSub '$('>
                spids: [80 86]
              )
            }
          spids: [79]
        )
      ]
      spids: [77]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (LhsName name:green)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(tput)} {(setaf)} {(2)})])
                left_token: <Left_CommandSub '$('>
                spids: [91 97]
              )
            }
          spids: [90]
        )
      ]
      spids: [88]
    )
    (FuncDef
      name: 'kube::test::clear_all'
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C 
                          {(kube) (Lit_Other ':') (Lit_Other ':') (test) (Lit_Other ':') (Lit_Other ':') 
                            (if_supports_resource)
                          } {(DQ (rc))}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(kubectl)} {(delete)} 
                      {
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Name kube_flags>
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [137 142]
                          )
                        )
                      } {(rc)} {(--all)} {(--grace-period) (Lit_Other '=') (0)} {(--force)}
                    )
                  ]
                  spids: [16777215 129]
                )
              ]
              spids: [16777215 156]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C 
                          {(kube) (Lit_Other ':') (Lit_Other ':') (test) (Lit_Other ':') (Lit_Other ':') 
                            (if_supports_resource)
                          } {(DQ (pods))}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(kubectl)} {(delete)} 
                      {
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Name kube_flags>
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [183 188]
                          )
                        )
                      } {(pods)} {(--all)} {(--grace-period) (Lit_Other '=') (0)} {(--force)}
                    )
                  ]
                  spids: [16777215 175]
                )
              ]
              spids: [16777215 202]
            )
          ]
          spids: [110]
        )
      spids: [100 109]
    )
    (FuncDef
      name: 'kube::test::get_caller'
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:levels)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(2)})
                        spids: [229 233]
                      )
                    }
                  spids: [228]
                )
              ]
              spids: [226]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:caller_file)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (BracedVarSub
                          token: <VSub_Name BASH_SOURCE>
                          bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$levels')}))
                          spids: [240 245]
                        )
                      )
                    }
                  spids: [238]
                )
              ]
              spids: [236]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:caller_line)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (BracedVarSub
                          token: <VSub_Name BASH_LINENO>
                          bracket_op: 
                            (ArrayIndex
                              expr: 
                                (ArithBinary
                                  op_id: Arith_Minus
                                  left: (ArithWord w:{($ VSub_Name '$levels')})
                                  right: (ArithWord w:{(Lit_Digits 1)})
                                )
                            )
                          spids: [253 260]
                        )
                      )
                    }
                  spids: [251]
                )
              ]
              spids: [249]
            )
            (C {(echo)} 
              {
                (DQ 
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [(C {(basename)} {(DQ (${ VSub_Name caller_file))})]
                      )
                    left_token: <Left_CommandSub '$('>
                    spids: [267 275]
                  ) (':') (${ VSub_Name caller_line)
                )
              }
            )
          ]
          spids: [223]
        )
      spids: [213 222]
    )
    (FuncDef
      name: 'kube::test::get_object_assert'
      body: 
        (BraceGroup
          children: [
            (C 
              {(kube) (Lit_Other ':') (Lit_Other ':') (test) (Lit_Other ':') (Lit_Other ':') 
                (object_assert)
              } {(1)} {(DQ ($ VSub_At '$@'))}
            )
          ]
          spids: [316]
        )
      spids: [306 315]
    )
    (FuncDef
      name: 'kube::test::wait_object_assert'
      body: 
        (BraceGroup
          children: [
            (C 
              {(kube) (Lit_Other ':') (Lit_Other ':') (test) (Lit_Other ':') (Lit_Other ':') 
                (object_assert)
              } {(10)} {(DQ ($ VSub_At '$@'))}
            )
          ]
          spids: [364]
        )
      spids: [354 363]
    )
    (FuncDef
      name: 'kube::test::object_assert'
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:tries)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [420]
                )
              ]
              spids: [418]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:object)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [426]
                )
              ]
              spids: [424]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:request)
                  op: Equal
                  rhs: {($ VSub_Number '$3')}
                  spids: [432]
                )
              ]
              spids: [430]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:expected)
                  op: Equal
                  rhs: {($ VSub_Number '$4')}
                  spids: [438]
                )
              ]
              spids: [436]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:args)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 5>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{})
                        spids: [445 448]
                      )
                    }
                  spids: [444]
                )
              ]
              spids: [442]
            )
            (ForEach
              iter_name: j
              iter_words: [
                {
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(seq)} {(1)} {(${ VSub_Name tries)})])
                    left_token: <Left_CommandSub '$('>
                    spids: [458 466]
                  )
                }
              ]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:res)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(eval)} {(kubectl)} {(get)} {(-a)} 
                                        {
                                          (DQ 
                                            (BracedVarSub
                                              token: <VSub_Name kube_flags>
                                              bracket_op: (WholeArray op_id:Lit_At)
                                              spids: [483 488]
                                            )
                                          )
                                        } {(${ VSub_Name args)} {($ VSub_Name '$object')} {(-o)} 
                                        {(go-template) (Lit_Other '=') 
                                          (EscapedLiteralPart
                                            token: <Lit_EscapedChar '\\"'>
                                          ) ($ VSub_Name '$request') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)
                                        }
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [473 504]
                              )
                            }
                          spids: [472]
                        )
                      ]
                      spids: [472]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_EqualTilde
                                      left: {(DQ ($ VSub_Name '$res'))}
                                      right: 
                                        {(Lit_Other '^') ($ VSub_Name '$expected') (Lit_Other '$')}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} {(-n)} {(${ VSub_Name green)})
                            (C {(echo)} 
                              {
                                (DQ 
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (C 
                                            {(kube) (Lit_Other ':') (Lit_Other ':') (test) 
                                              (Lit_Other ':') (Lit_Other ':') (get_caller)
                                            } {(3)}
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub '$('>
                                    spids: [539 549]
                                  ) (': Successful get ') ($ VSub_Name '$object') (' ') ($ VSub_Name '$request') (': ') ($ VSub_Name '$res')
                                )
                              }
                            )
                            (C {(echo)} {(-n)} {(${ VSub_Name reset)})
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(0)}
                            )
                          ]
                          spids: [16777215 524]
                        )
                      ]
                      spids: [16777215 573]
                    )
                    (C {(echo)} 
                      {
                        (DQ ('Waiting for Get ') ($ VSub_Name '$object') (' ') ($ VSub_Name '$request') 
                          (' ') ($ VSub_Name '$args') (': expected: ') ($ VSub_Name '$expected') (', got: ') ($ VSub_Name '$res')
                        )
                      }
                    )
                    (C {(sleep)} 
                      {
                        (ArithSubPart
                          anode: 
                            (ArithBinary
                              op_id: Arith_Minus
                              left: (ArithWord w:{(${ VSub_Name j)})
                              right: (ArithWord w:{(Lit_Digits 1)})
                            )
                          spids: [594 601]
                        )
                      }
                    )
                  ]
                  spids: [469 604]
                )
              spids: [457 467]
            )
            (C {(echo)} {(${ VSub_Name bold) (${ VSub_Name red)})
            (C {(echo)} 
              {
                (DQ 
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [
                          (C 
                            {(kube) (Lit_Other ':') (Lit_Other ':') (test) (Lit_Other ':') 
                              (Lit_Other ':') (get_caller)
                            } {(3)}
                          )
                        ]
                      )
                    left_token: <Left_CommandSub '$('>
                    spids: [621 631]
                  ) (': FAIL!')
                )
              }
            )
            (C {(echo)} {(DQ ('Get ') ($ VSub_Name '$object') (' ') ($ VSub_Name '$request'))})
            (C {(echo)} {(DQ ('  Expected: ') ($ VSub_Name '$expected'))})
            (C {(echo)} {(DQ ('  Got:      ') ($ VSub_Name '$res'))})
            (C {(echo)} {(${ VSub_Name reset) (${ VSub_Name red)})
            (C {(caller)})
            (C {(echo)} {(${ VSub_Name reset)})
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
          ]
          spids: [415]
        )
      spids: [405 414]
    )
    (FuncDef
      name: 'kube::test::get_object_jsonpath_assert'
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:object)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [704]
                )
              ]
              spids: [702]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:request)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [710]
                )
              ]
              spids: [708]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:expected)
                  op: Equal
                  rhs: {($ VSub_Number '$3')}
                  spids: [716]
                )
              ]
              spids: [714]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:res)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(eval)} {(kubectl)} {(get)} {(-a)} 
                                {
                                  (DQ 
                                    (BracedVarSub
                                      token: <VSub_Name kube_flags>
                                      bracket_op: (WholeArray op_id:Lit_At)
                                      spids: [732 737]
                                    )
                                  )
                                } {($ VSub_Name '$object')} {(-o)} 
                                {(Lit_VarLike 'jsonpath=') 
                                  (EscapedLiteralPart
                                    token: <Lit_EscapedChar '\\"'>
                                  ) ($ VSub_Name '$request') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)
                                }
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [722 748]
                      )
                    }
                  spids: [721]
                )
              ]
              spids: [721]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_EqualTilde
                              left: {(DQ ($ VSub_Name '$res'))}
                              right: {(Lit_Other '^') ($ VSub_Name '$expected') (Lit_Other '$')}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(-n)} {(${ VSub_Name green)})
                    (C {(echo)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C 
                                    {(kube) (Lit_Other ':') (Lit_Other ':') (test) (Lit_Other ':') 
                                      (Lit_Other ':') (get_caller)
                                    }
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [784 792]
                          ) (': Successful get ') ($ VSub_Name '$object') (' ') ($ VSub_Name '$request') (': ') ($ VSub_Name '$res')
                        )
                      }
                    )
                    (C {(echo)} {(-n)} {(${ VSub_Name reset)})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
                  ]
                  spids: [16777215 769]
                )
              ]
              else_action: [
                (C {(echo)} {(${ VSub_Name bold) (${ VSub_Name red)})
                (C {(echo)} 
                  {
                    (DQ 
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C 
                                {(kube) (Lit_Other ':') (Lit_Other ':') (test) (Lit_Other ':') 
                                  (Lit_Other ':') (get_caller)
                                }
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [832 840]
                      ) (': FAIL!')
                    )
                  }
                )
                (C {(echo)} {(DQ ('Get ') ($ VSub_Name '$object') (' ') ($ VSub_Name '$request'))})
                (C {(echo)} {(DQ ('  Expected: ') ($ VSub_Name '$expected'))})
                (C {(echo)} {(DQ ('  Got:      ') ($ VSub_Name '$res'))})
                (C {(echo)} {(${ VSub_Name reset) (${ VSub_Name red)})
                (C {(caller)})
                (C {(echo)} {(${ VSub_Name reset)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
              spids: [816 896]
            )
          ]
          spids: [699]
        )
      spids: [689 698]
    )
    (FuncDef
      name: 'kube::test::describe_object_assert'
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:resource)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [916]
                )
              ]
              spids: [914]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:object)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [922]
                )
              ]
              spids: [920]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:matches)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_At '@'>
                        suffix_op: (Slice begin:(ArithWord w:{(Lit_Digits 3)}))
                        spids: [929 933]
                      )
                    }
                  spids: [928]
                )
              ]
              spids: [926]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:result)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(eval)} {(kubectl)} {(describe)} 
                                {
                                  (DQ 
                                    (BracedVarSub
                                      token: <VSub_Name kube_flags>
                                      bracket_op: (WholeArray op_id:Lit_At)
                                      spids: [946 951]
                                    )
                                  )
                                } {($ VSub_Name '$resource')} {($ VSub_Name '$object')}
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [938 957]
                      )
                    }
                  spids: [937]
                )
              ]
              spids: [937]
            )
            (ForEach
              iter_name: match
              iter_words: [{(${ VSub_Name matches)}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (LogicalNot
                                      child: 
                                        (WordTest
                                          w: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (Pipeline
                                                        children: [
                                                          (C {(echo)} {(DQ ($ VSub_Name '$result'))})
                                                          (C {(grep)} {(${ VSub_Name match)})
                                                        ]
                                                        negated: False
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [981 995]
                                              )
                                            }
                                        )
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} {(${ VSub_Name bold) (${ VSub_Name red)})
                            (C {(echo)} 
                              {
                                (DQ 
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (C 
                                            {(kube) (Lit_Other ':') (Lit_Other ':') (test) 
                                              (Lit_Other ':') (Lit_Other ':') (get_caller)
                                            }
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub '$('>
                                    spids: [1016 1024]
                                  ) (': FAIL!')
                                )
                              }
                            )
                            (C {(echo)} 
                              {
                                (DQ ('Describe ') ($ VSub_Name '$resource') (' ') 
                                  ($ VSub_Name '$object')
                                )
                              }
                            )
                            (C {(echo)} {(DQ ('  Expected Match: ') ($ VSub_Name '$match'))})
                            (C {(echo)} {(DQ ('  Not found in:'))})
                            (C {(echo)} {(DQ ($ VSub_Name '$result'))})
                            (C {(echo)} {(${ VSub_Name reset) (${ VSub_Name red)})
                            (C {(caller)})
                            (C {(echo)} {(${ VSub_Name reset)})
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(1)}
                            )
                          ]
                          spids: [16777215 1000]
                        )
                      ]
                      spids: [16777215 1086]
                    )
                  ]
                  spids: [972 1089]
                )
              spids: [966 970]
            )
            (C {(echo)} {(-n)} {(${ VSub_Name green)})
            (C {(echo)} 
              {
                (DQ 
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [
                          (C 
                            {(kube) (Lit_Other ':') (Lit_Other ':') (test) (Lit_Other ':') 
                              (Lit_Other ':') (get_caller)
                            }
                          )
                        ]
                      )
                    left_token: <Left_CommandSub '$('>
                    spids: [1105 1113]
                  ) (': Successful describe ') ($ VSub_Name '$resource') (' ') ($ VSub_Name '$object') (':')
                )
              }
            )
            (C {(echo)} {(DQ ($ VSub_Name '$result'))})
            (C {(echo)} {(-n)} {(${ VSub_Name reset)})
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [911]
        )
      spids: [901 910]
    )
    (FuncDef
      name: 'kube::test::describe_object_events_assert'
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:resource)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [1160]
                )
              ]
              spids: [1158]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:object)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [1166]
                )
              ]
              spids: [1164]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:showevents)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 3>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (true))})
                        spids: [1173 1179]
                      )
                    }
                  spids: [1172]
                )
              ]
              spids: [1170]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolUnary
                              op_id: BoolUnary_z
                              child: 
                                {
                                  (DQ 
                                    (BracedVarSub
                                      token: <VSub_Number 3>
                                      suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                                      spids: [1190 1193]
                                    )
                                  )
                                }
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:result)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(eval)} {(kubectl)} {(describe)} 
                                        {
                                          (DQ 
                                            (BracedVarSub
                                              token: <VSub_Name kube_flags>
                                              bracket_op: (WholeArray op_id:Lit_At)
                                              spids: [1211 1216]
                                            )
                                          )
                                        } {($ VSub_Name '$resource')} {($ VSub_Name '$object')}
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [1203 1222]
                              )
                            }
                          spids: [1202]
                        )
                      ]
                      spids: [1202]
                    )
                  ]
                  spids: [16777215 1199]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:result)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(eval)} {(kubectl)} {(describe)} 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          token: <VSub_Name kube_flags>
                                          bracket_op: (WholeArray op_id:Lit_At)
                                          spids: [1237 1242]
                                        )
                                      )
                                    } {(DQ ('--show-events=') ($ VSub_Name '$showevents'))} {($ VSub_Name '$resource')} 
                                    {($ VSub_Name '$object')}
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [1229 1253]
                          )
                        }
                      spids: [1228]
                    )
                  ]
                  spids: [1228]
                )
              ]
              spids: [1225 1256]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolUnary
                              op_id: BoolUnary_n
                              child: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (Pipeline
                                            children: [
                                              (C {(echo)} {(DQ ($ VSub_Name '$result'))})
                                              (C {(grep)} 
                                                {(DQ ('No events.') (Lit_Other '\\') ('|Events:'))}
                                              )
                                            ]
                                            negated: False
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub '$('>
                                    spids: [1266 1282]
                                  )
                                }
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:has_events)
                          op: Equal
                          rhs: {(DQ (true))}
                          spids: [1292]
                        )
                      ]
                      spids: [1290]
                    )
                  ]
                  spids: [16777215 1287]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_Local
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:has_events)
                      op: Equal
                      rhs: {(DQ (false))}
                      spids: [1303]
                    )
                  ]
                  spids: [1301]
                )
              ]
              spids: [1298 1309]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {($ VSub_Name '$showevents')}
                              right: {($ VSub_Name '$has_events')}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(-n)} {(${ VSub_Name green)})
                    (C {(echo)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C 
                                    {(kube) (Lit_Other ':') (Lit_Other ':') (test) (Lit_Other ':') 
                                      (Lit_Other ':') (get_caller)
                                    }
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [1340 1348]
                          ) (': Successful describe')
                        )
                      }
                    )
                    (C {(echo)} {(DQ ($ VSub_Name '$result'))})
                    (C {(echo)} {(${ VSub_Name reset)})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
                  ]
                  spids: [16777215 1325]
                )
              ]
              else_action: [
                (C {(echo)} {(${ VSub_Name bold) (${ VSub_Name red)})
                (C {(echo)} 
                  {
                    (DQ 
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C 
                                {(kube) (Lit_Other ':') (Lit_Other ':') (test) (Lit_Other ':') 
                                  (Lit_Other ':') (get_caller)
                                }
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [1388 1396]
                      ) (': FAIL')
                    )
                  }
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (DBracket
                              expr: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: {($ VSub_Name '$showevents')}
                                  right: {(DQ (false))}
                                )
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [(C {(echo)} {(DQ ('  Events information should not be described in:'))})]
                      spids: [16777215 1416]
                    )
                  ]
                  else_action: [(C {(echo)} {(DQ ('  Events information not found in:'))})]
                  spids: [1426 1436]
                )
                (C {(echo)} {($ VSub_Name '$result')})
                (C {(echo)} {(${ VSub_Name reset) (${ VSub_Name red)})
                (C {(caller)})
                (C {(echo)} {(${ VSub_Name reset)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
              spids: [1372 1469]
            )
          ]
          spids: [1155]
        )
      spids: [1145 1154]
    )
    (FuncDef
      name: 'kube::test::describe_resource_assert'
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:resource)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [1489]
                )
              ]
              spids: [1487]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:matches)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_At '@'>
                        suffix_op: (Slice begin:(ArithWord w:{(Lit_Digits 2)}))
                        spids: [1496 1500]
                      )
                    }
                  spids: [1495]
                )
              ]
              spids: [1493]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:result)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(eval)} {(kubectl)} {(describe)} 
                                {
                                  (DQ 
                                    (BracedVarSub
                                      token: <VSub_Name kube_flags>
                                      bracket_op: (WholeArray op_id:Lit_At)
                                      spids: [1513 1518]
                                    )
                                  )
                                } {($ VSub_Name '$resource')}
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [1505 1522]
                      )
                    }
                  spids: [1504]
                )
              ]
              spids: [1504]
            )
            (ForEach
              iter_name: match
              iter_words: [{(${ VSub_Name matches)}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (LogicalNot
                                      child: 
                                        (WordTest
                                          w: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (Pipeline
                                                        children: [
                                                          (C {(echo)} {(DQ ($ VSub_Name '$result'))})
                                                          (C {(grep)} {(${ VSub_Name match)})
                                                        ]
                                                        negated: False
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [1546 1560]
                                              )
                                            }
                                        )
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} {(${ VSub_Name bold) (${ VSub_Name red)})
                            (C {(echo)} {(DQ ('FAIL!'))})
                            (C {(echo)} {(DQ ('Describe ') ($ VSub_Name '$resource'))})
                            (C {(echo)} {(DQ ('  Expected Match: ') ($ VSub_Name '$match'))})
                            (C {(echo)} {(DQ ('  Not found in:'))})
                            (C {(echo)} {(DQ ($ VSub_Name '$result'))})
                            (C {(echo)} {(${ VSub_Name reset) (${ VSub_Name red)})
                            (C {(caller)})
                            (C {(echo)} {(${ VSub_Name reset)})
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(1)}
                            )
                          ]
                          spids: [16777215 1565]
                        )
                      ]
                      spids: [16777215 1640]
                    )
                  ]
                  spids: [1537 1643]
                )
              spids: [1531 1535]
            )
            (C {(echo)} {(-n)} {(${ VSub_Name green)})
            (C {(echo)} {(DQ ('Successful describe ') ($ VSub_Name '$resource') (':'))})
            (C {(echo)} {(DQ ($ VSub_Name '$result'))})
            (C {(echo)} {(-n)} {(${ VSub_Name reset)})
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [1484]
        )
      spids: [1474 1483]
    )
    (FuncDef
      name: 'kube::test::describe_resource_events_assert'
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:resource)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [1703]
                )
              ]
              spids: [1701]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:showevents)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 2>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (true))})
                        spids: [1710 1716]
                      )
                    }
                  spids: [1709]
                )
              ]
              spids: [1707]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:result)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(eval)} {(kubectl)} {(describe)} 
                                {
                                  (DQ 
                                    (BracedVarSub
                                      token: <VSub_Name kube_flags>
                                      bracket_op: (WholeArray op_id:Lit_At)
                                      spids: [1729 1734]
                                    )
                                  )
                                } {(DQ ('--show-events=') ($ VSub_Name '$showevents'))} {($ VSub_Name '$resource')}
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [1721 1743]
                      )
                    }
                  spids: [1720]
                )
              ]
              spids: [1720]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (WordTest
                              w: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (Pipeline
                                            children: [
                                              (C {(echo)} {(DQ ($ VSub_Name '$result'))})
                                              (C {(grep)} 
                                                {(DQ ('No events.') (Lit_Other '\\') ('|Events:'))}
                                              )
                                            ]
                                            negated: False
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub '$('>
                                    spids: [1751 1767]
                                  )
                                }
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:has_events)
                          op: Equal
                          rhs: {(DQ (true))}
                          spids: [1777]
                        )
                      ]
                      spids: [1775]
                    )
                  ]
                  spids: [16777215 1772]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_Local
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:has_events)
                      op: Equal
                      rhs: {(DQ (false))}
                      spids: [1788]
                    )
                  ]
                  spids: [1786]
                )
              ]
              spids: [1783 1794]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {($ VSub_Name '$showevents')}
                              right: {($ VSub_Name '$has_events')}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(-n)} {(${ VSub_Name green)})
                    (C {(echo)} {(DQ ('Successful describe'))})
                    (C {(echo)} {(DQ ($ VSub_Name '$result'))})
                    (C {(echo)} {(-n)} {(${ VSub_Name reset)})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
                  ]
                  spids: [16777215 1810]
                )
              ]
              else_action: [
                (C {(echo)} {(${ VSub_Name bold) (${ VSub_Name red)})
                (C {(echo)} {(DQ (FAIL))})
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (DBracket
                              expr: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: {($ VSub_Name '$showevents')}
                                  right: {(DQ (false))}
                                )
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [(C {(echo)} {(DQ ('  Events information should not be described in:'))})]
                      spids: [16777215 1885]
                    )
                  ]
                  else_action: [(C {(echo)} {(DQ ('  Events information not found in:'))})]
                  spids: [1895 1905]
                )
                (C {(echo)} {($ VSub_Name '$result')})
                (C {(caller)})
                (C {(echo)} {(${ VSub_Name reset)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
              spids: [1850 1928]
            )
          ]
          spids: [1698]
        )
      spids: [1688 1697]
    )
    (FuncDef
      name: 'kube::test::if_sort_by_has_correct_order'
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:array)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [
                                    (Pipeline
                                      children: [
                                        (C {(echo)} {(DQ ($ VSub_Number '$1'))})
                                        (C {(awk)} {(SQ <'{if(NR!=1) print $1}'>)})
                                      ]
                                      negated: False
                                    )
                                  ]
                                )
                              left_token: <Left_CommandSub '$('>
                              spids: [1953 1966]
                            )
                          }
                        ]
                      )
                    }
                  spids: [1951]
                )
              ]
              spids: [1949]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:var) op:Equal spids:[1972])]
              spids: [1970]
            )
            (ForEach
              iter_name: i
              iter_words: [
                {
                  (DQ 
                    (BracedVarSub
                      token: <VSub_Name array>
                      bracket_op: (WholeArray op_id:Lit_At)
                      spids: [1982 1987]
                    )
                  )
                }
              ]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:var)
                          op: PlusEqual
                          rhs: {(DQ ($ VSub_Name '$i') (':'))}
                          spids: [1994]
                        )
                      ]
                      spids: [1994]
                    )
                  ]
                  spids: [1991 2001]
                )
              spids: [1980 1989]
            )
            (C 
              {(kube) (Lit_Other ':') (Lit_Other ':') (test) (Lit_Other ':') (Lit_Other ':') 
                (if_has_string)
              } {(DQ ($ VSub_Name '$var'))} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_At '@'>
                    suffix_op: (Slice begin:(ArithWord w:{($ VSub_Pound '$#')}))
                    spids: [2018 2022]
                  )
                )
              }
            )
          ]
          spids: [1946]
        )
      spids: [1936 1945]
    )
    (FuncDef
      name: 'kube::test::if_has_string'
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:message)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [2043]
                )
              ]
              spids: [2041]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:match)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [2049]
                )
              ]
              spids: [2047]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(echo)} {(DQ ($ VSub_Name '$message'))})
                            (C {(grep)} {(-q)} {(DQ ($ VSub_Name '$match'))})
                          ]
                          negated: False
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ (Successful))})
                    (C {(echo)} {(DQ ('message:') ($ VSub_Name '$message'))})
                    (C {(echo)} {(DQ ('has:') ($ VSub_Name '$match'))})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
                  ]
                  spids: [16777215 2073]
                )
              ]
              else_action: [
                (C {(echo)} {(DQ ('FAIL!'))})
                (C {(echo)} {(DQ ('message:') ($ VSub_Name '$message'))})
                (C {(echo)} {(DQ ('has not:') ($ VSub_Name '$match'))})
                (C {(caller)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
              spids: [2104 2138]
            )
          ]
          spids: [2038]
        )
      spids: [2028 2037]
    )
    (FuncDef
      name: 'kube::test::if_has_not_string'
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:message)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [2158]
                )
              ]
              spids: [2156]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:match)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [2164]
                )
              ]
              spids: [2162]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(echo)} {(DQ ($ VSub_Name '$message'))})
                            (C {(grep)} {(-q)} {(DQ ($ VSub_Name '$match'))})
                          ]
                          negated: False
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('FAIL!'))})
                    (C {(echo)} {(DQ ('message:') ($ VSub_Name '$message'))})
                    (C {(echo)} {(DQ ('has:') ($ VSub_Name '$match'))})
                    (C {(caller)})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 2188]
                )
              ]
              else_action: [
                (C {(echo)} {(DQ (Successful))})
                (C {(echo)} {(DQ ('message:') ($ VSub_Name '$message'))})
                (C {(echo)} {(DQ ('has not:') ($ VSub_Name '$match'))})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
              ]
              spids: [2222 2253]
            )
          ]
          spids: [2153]
        )
      spids: [2143 2152]
    )
    (FuncDef
      name: 'kube::test::if_empty_string'
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:match)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [2273]
                )
              ]
              spids: [2271]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$match'))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ($ VSub_Name '$match') (' is not empty'))})
                    (C {(caller)})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 2290]
                )
              ]
              else_action: [
                (C {(echo)} {(DQ (Successful))})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
              ]
              spids: [2309 2324]
            )
          ]
          spids: [2268]
        )
      spids: [2258 2267]
    )
    (FuncDef
      name: 'kube::test::if_supports_resource'
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SUPPORTED_RESOURCES)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name SUPPORTED_RESOURCES>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                        spids: [2361 2366]
                      )
                    }
                  spids: [2360]
                )
              ]
              spids: [2360]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:REQUIRED_RESOURCE)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                        spids: [2370 2375]
                      )
                    }
                  spids: [2369]
                )
              ]
              spids: [2369]
            )
            (ForEach
              iter_name: r
              iter_words: [
                {
                  (DQ 
                    (BracedVarSub
                      token: <VSub_Name SUPPORTED_RESOURCES>
                      bracket_op: (WholeArray op_id:Lit_At)
                      spids: [2386 2391]
                    )
                  )
                }
              ]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (LogicalOr
                                      left: 
                                        (BoolBinary
                                          op_id: BoolBinary_GlobDEqual
                                          left: {(DQ (${ VSub_Name r))}
                                          right: {(DQ ('*'))}
                                        )
                                      right: 
                                        (BoolBinary
                                          op_id: BoolBinary_GlobDEqual
                                          left: {(DQ (${ VSub_Name r))}
                                          right: {(DQ (${ VSub_Name REQUIRED_RESOURCE))}
                                        )
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                          spids: [16777215 2433]
                        )
                      ]
                      spids: [16777215 2441]
                    )
                  ]
                  spids: [2395 2444]
                )
              spids: [2384 2393]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
          ]
          spids: [2357]
        )
      spids: [2347 2356]
    )
    (FuncDef
      name: 'kube::test::version::object_to_file'
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:name)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [2471]
                )
              ]
              spids: [2471]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:flags)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 2>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                        spids: [2476 2481]
                      )
                    }
                  spids: [2475]
                )
              ]
              spids: [2475]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:file)
                  op: Equal
                  rhs: {($ VSub_Number '$3')}
                  spids: [2484]
                )
              ]
              spids: [2484]
            )
            (Pipeline
              children: [
                (C {(kubectl)} {(version)} {($ VSub_Name '$flags')})
                (C {(grep)} {(DQ ($ VSub_Name '$name') (' Version:'))})
                (C {(sed)} {(-e)} 
                  {(s/) (DQ ($ VSub_Name '$name') (' Version: version.Info{')) (/) (SQ </>)} {(-e)} {(s/) (SQ <'}'>) (/) (SQ </>)} {(-e)} {(s/) (SQ <', '>) (/) (SQ <','>) (/g)} {(-e)} 
                  {(s/) (SQ <':'>) (/) (SQ <'=/g'>)} {(-e)} {(s/) (SQ <'"'>) (/) (DQ ) (/g)}
                )
                (SimpleCommand
                  words: [{(tr)} {(Lit_Comma ',')} {(SQ <'\\n'>)}]
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: 16777215
                      arg_word: {(DQ (${ VSub_Name file))}
                      spids: [2574]
                    )
                  ]
                )
              ]
              negated: False
            )
          ]
          spids: [2468]
        )
      spids: [2455 2467]
    )
    (FuncDef
      name: 'kube::test::version::json_object_to_file'
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:flags)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [2601]
                )
              ]
              spids: [2601]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:file)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [2605]
                )
              ]
              spids: [2605]
            )
            (Pipeline
              children: [
                (C {(kubectl)} {(version)} {($ VSub_Name '$flags')} {(--output)} {(json)})
                (C {(sed)} {(-e)} {(s/) (SQ <' '>) (/) (SQ ) (/g)} {(-e)} 
                  {(s/) (SQ <'\\"'>) (/) (SQ ) (/g)} {(-e)} {(s/) (SQ <'}'>) (/) (SQ ) (/g)} {(-e)} {(s/) (SQ <'{'>) (/) (SQ ) (/g)} {(-e)} 
                  {(s/) (SQ <'clientVersion:'>) (/) (SQ <'clientVersion:,'>) (/)} {(-e)} {(s/) (SQ <'serverVersion:'>) (/) (SQ <'serverVersion:,'>) (/)}
                )
                (SimpleCommand
                  words: [{(tr)} {(Lit_Comma ',')} {(SQ <'\\n'>)}]
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: 16777215
                      arg_word: {(DQ (${ VSub_Name file))}
                      spids: [2701]
                    )
                  ]
                )
              ]
              negated: False
            )
          ]
          spids: [2598]
        )
      spids: [2585 2597]
    )
    (FuncDef
      name: 'kube::test::version::json_client_server_object_to_file'
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:flags)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [2728]
                )
              ]
              spids: [2728]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:name)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [2732]
                )
              ]
              spids: [2732]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:file)
                  op: Equal
                  rhs: {($ VSub_Number '$3')}
                  spids: [2736]
                )
              ]
              spids: [2736]
            )
            (Pipeline
              children: [
                (C {(kubectl)} {(version)} {($ VSub_Name '$flags')} {(--output)} {(json)})
                (C {(jq)} {(-r)} {(DQ (.) (${ VSub_Name name))})
                (SimpleCommand
                  words: [
                    {(sed)}
                    {(-e)}
                    {(s/) (SQ <'\\"'>) (/) (SQ ) (/g)}
                    {(-e)}
                    {(s/) (SQ <'}'>) (/) (SQ ) (/g)}
                    {(-e)}
                    {(s/) (SQ <'{'>) (/) (SQ ) (/g)}
                    {(-e)}
                    {(/) (Lit_Other '^') (Lit_Other '$') (/d)}
                    {(-e)}
                    {(s/) (SQ <','>) (/) (SQ ) (/g)}
                    {(-e)}
                    {(s/) (SQ <':'>) (/) (SQ <'='>) (/g)}
                  ]
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: 16777215
                      arg_word: {(DQ (${ VSub_Name file))}
                      spids: [2830]
                    )
                  ]
                )
              ]
              negated: False
            )
          ]
          spids: [2725]
        )
      spids: [2712 2724]
    )
    (FuncDef
      name: 'kube::test::version::yaml_object_to_file'
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:flags)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [2857]
                )
              ]
              spids: [2857]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:file)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [2861]
                )
              ]
              spids: [2861]
            )
            (Pipeline
              children: [
                (C {(kubectl)} {(version)} {($ VSub_Name '$flags')} {(--output)} {(yaml)})
                (SimpleCommand
                  words: [
                    {(sed)}
                    {(-e)}
                    {(s/) (SQ <' '>) (/) (SQ ) (/g)}
                    {(-e)}
                    {(s/) (SQ <'\\"'>) (/) (SQ ) (/g)}
                    {(-e)}
                    {(/) (Lit_Other '^') (Lit_Other '$') (/d)}
                  ]
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: 16777215
                      arg_word: {(DQ (${ VSub_Name file))}
                      spids: [2908]
                    )
                  ]
                )
              ]
              negated: False
            )
          ]
          spids: [2854]
        )
      spids: [2841 2853]
    )
    (FuncDef
      name: 'kube::test::version::diff_assert'
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:original)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [2937]
                )
              ]
              spids: [2935]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:comparator)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 2>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (eq))})
                        spids: [2944 2950]
                      )
                    }
                  spids: [2943]
                )
              ]
              spids: [2941]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:latest)
                  op: Equal
                  rhs: {($ VSub_Number '$3')}
                  spids: [2955]
                )
              ]
              spids: [2953]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:diff_msg)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 4>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                        spids: [2962 2967]
                      )
                    }
                  spids: [2961]
                )
              ]
              spids: [2959]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:res) op:Equal rhs:{(DQ )} spids:[2972])]
              spids: [2970]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} {($ VSub_Name '$original')} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(${ VSub_Name bold) (${ VSub_Name red)})
                    (C {(echo)} {(DQ ('FAIL! ') (${ VSub_Name diff_msg))})
                    (C {(echo)} {(DQ ("the file '") (${ VSub_Name original) ("' does not exit"))})
                    (C {(echo)} {(${ VSub_Name reset) (${ VSub_Name red)})
                    (C {(caller)})
                    (C {(echo)} {(${ VSub_Name reset)})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 2991]
                )
              ]
              spids: [16777215 3050]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} {($ VSub_Name '$latest')} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(${ VSub_Name bold) (${ VSub_Name red)})
                    (C {(echo)} {(DQ ('FAIL! ') (${ VSub_Name diff_msg))})
                    (C {(echo)} {(DQ ("the file '") (${ VSub_Name latest) ("' does not exit"))})
                    (C {(echo)} {(${ VSub_Name reset) (${ VSub_Name red)})
                    (C {(caller)})
                    (C {(echo)} {(${ VSub_Name reset)})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 3067]
                )
              ]
              spids: [16777215 3126]
            )
            (SimpleCommand
              words: [{(sort)} {(${ VSub_Name original)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {(DQ (${ VSub_Name original) (.sorted))}
                  spids: [3136]
                )
              ]
            )
            (SimpleCommand
              words: [{(sort)} {(${ VSub_Name latest)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {(DQ (${ VSub_Name latest) (.sorted))}
                  spids: [3152]
                )
              ]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$comparator'))} 
                          {(Lit_Other '=') (Lit_Other '=')} {(DQ (eq))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} 
                                  {
                                    (DQ 
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [
                                              (C {(diff)} {(-iwB)} {(${ VSub_Name original) (.sorted)} 
                                                {(${ VSub_Name latest) (.sorted)}
                                              )
                                            ]
                                          )
                                        left_token: <Left_CommandSub '$('>
                                        spids: [3189 3203]
                                      )
                                    )
                                  } {(Lit_Other '=') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} {(-n)} {(${ VSub_Name green)})
                            (C {(echo)} {(DQ ('Successful: ') (${ VSub_Name diff_msg))})
                            (C {(echo)} {(-n)} {(${ VSub_Name reset)})
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(0)}
                            )
                          ]
                          spids: [16777215 3216]
                        )
                      ]
                      else_action: [
                        (C {(echo)} {(${ VSub_Name bold) (${ VSub_Name red)})
                        (C {(echo)} {(DQ ('FAIL! ') (${ VSub_Name diff_msg))})
                        (C {(echo)} {(DQ ('  Expected: '))})
                        (C {(echo)} 
                          {
                            (DQ 
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(cat)} {(${ VSub_Name original)})]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [3285 3291]
                              )
                            )
                          }
                        )
                        (C {(echo)} {(DQ ('  Got: '))})
                        (C {(echo)} 
                          {
                            (DQ 
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(cat)} {(${ VSub_Name latest)})]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [3305 3311]
                              )
                            )
                          }
                        )
                        (C {(echo)} {(${ VSub_Name reset) (${ VSub_Name red)})
                        (C {(caller)})
                        (C {(echo)} {(${ VSub_Name reset)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                      spids: [3252 3340]
                    )
                  ]
                  spids: [16777215 3181]
                )
              ]
              else_action: [
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} 
                              {
                                (DQ 
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (C {(diff)} {(-iwB)} {(${ VSub_Name original) (.sorted)} 
                                            {(${ VSub_Name latest) (.sorted)}
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub '$('>
                                    spids: [3355 3369]
                                  )
                                )
                              } {(Lit_Other ']')}
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (C {(echo)} {(-n)} {(${ VSub_Name green)})
                        (C {(echo)} {(DQ ('Successful: ') (${ VSub_Name diff_msg))})
                        (C {(echo)} {(-n)} {(${ VSub_Name reset)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                      spids: [16777215 3376]
                    )
                  ]
                  else_action: [
                    (C {(echo)} {(${ VSub_Name bold) (${ VSub_Name red)})
                    (C {(echo)} {(DQ ('FAIL! ') (${ VSub_Name diff_msg))})
                    (C {(echo)} {(DQ ('  Expected: '))})
                    (C {(echo)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(cat)} {(${ VSub_Name original)})]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [3445 3451]
                          )
                        )
                      }
                    )
                    (C {(echo)} {(DQ ('  Got: '))})
                    (C {(echo)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(cat)} {(${ VSub_Name latest)})]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [3465 3471]
                          )
                        )
                      }
                    )
                    (C {(echo)} {(${ VSub_Name reset) (${ VSub_Name red)})
                    (C {(caller)})
                    (C {(echo)} {(${ VSub_Name reset)})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [3412 3500]
                )
              ]
              spids: [3343 3503]
            )
          ]
          spids: [2932]
        )
      spids: [2919 2931]
    )
  ]
)