(CommandList
  children: [
    (C {(set)} {(-o)} {(errexit)})
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBE_ROOT)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(dirname)} {(DQ (${ VSub_Name BASH_SOURCE))})]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [64 72]
              ) (/..)
            }
          spids: [63]
        )
      ]
      spids: [63]
    )
    (C {(source)} {(DQ (${ VSub_Name KUBE_ROOT) (/hack/lib/init.sh))})
    (C {(kube) (Lit_Other ':') (Lit_Other ':') (golang) (Lit_Other ':') (Lit_Other ':') (setup_env)})
    (C {(make)} {(-C)} {(DQ (${ VSub_Name KUBE_ROOT))} {(Lit_VarLike 'WHAT=') (cmd/genswaggertypedocs)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:genswaggertypedocs)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (C 
                        {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') 
                          (find-binary)
                        } {(DQ (genswaggertypedocs))}
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [112 124]
              )
            }
          spids: [111]
        )
      ]
      spids: [111]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:gen_swagger_result) op:Equal rhs:{(0)} spids:[127])]
      spids: [127]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:result) op:Equal rhs:{(0)} spids:[130])]
      spids: [130]
    )
    (FuncDef
      name: find_files
      body: 
        (BraceGroup
          children: [
            (C {(find)} {(.)} {(-not)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\('>)} 
              {(EscapedLiteralPart token:<Lit_EscapedChar '\\('>)} {(-wholename)} {(SQ <./output>)} {(-o)} {(-wholename)} {(SQ <./_output>)} {(-o)} {(-wholename)} 
              {(SQ <./_gopath>)} {(-o)} {(-wholename)} {(SQ <./release>)} {(-o)} {(-wholename)} {(SQ <./target>)} {(-o)} {(-wholename)} 
              {(SQ <'*/third_party/*'>)} {(-o)} {(-wholename)} {(SQ <'*/vendor/*'>)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\)'>)} 
              {(-prune)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\)'>)} 
              {(EscapedLiteralPart token:<Lit_EscapedChar '\\('>)} {(-wholename)} {(SQ <'*pkg/api/v*/types.go'>)} {(-o)} {(-wholename)} {(SQ <'*pkg/apis/*/v*/types.go'>)} 
              {(-o)} {(-wholename)} {(SQ <'*pkg/api/unversioned/types.go'>)} 
              {(EscapedLiteralPart token:<Lit_EscapedChar '\\)'>)}
            )
          ]
          spids: [138]
        )
      spids: [134 137]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: (BoolBinary op_id:BoolBinary_eq left:{($ VSub_Pound '$#')} right:{(0)})
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:versioned_api_files)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(find_files)})
                                  (C {(egrep)} 
                                    {
                                      (DQ ('pkg/.[^/]*/((v.[^/]*)|unversioned)/types') 
                                        (Lit_Other '\\') (.go)
                                      )
                                    }
                                  )
                                ]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [285 297]
                      )
                    }
                  spids: [284]
                )
              ]
              spids: [284]
            )
          ]
          spids: [16777215 281]
        )
      ]
      else_action: [
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:versioned_api_files)
              op: Equal
              rhs: {(DQ (${ VSub_Star '*'))}
              spids: [302]
            )
          ]
          spids: [302]
        )
      ]
      spids: [299 309]
    )
    (ForEach
      iter_name: file
      iter_words: [{($ VSub_Name '$versioned_api_files')}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (AndOr
              children: [
                (C {($ VSub_Name '$genswaggertypedocs')} {(-v)} {(-s)} {(DQ (${ VSub_Name file))} {(-f)} 
                  {(-)}
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:gen_swagger_result)
                      op: Equal
                      rhs: {($ VSub_QMark '$?')}
                      spids: [342]
                    )
                  ]
                  spids: [342]
                )
              ]
              op_id: Op_DPipe
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_ne
                              left: {(DQ (${ VSub_Name gen_swagger_result))}
                              right: {(DQ (0))}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ ('API file: ') (${ VSub_Name file) (' is missing: ') 
                          (${ VSub_Name gen_swagger_result) (' descriptions')
                        )
                      }
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:result) op:Equal rhs:{(1)} spids:[383])]
                      spids: [383]
                    )
                  ]
                  spids: [16777215 365]
                )
              ]
              spids: [16777215 387]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(grep)} {(json) (Lit_Other ':')} {(DQ (${ VSub_Name file))})
                            (C {(grep)} {(-v)} {(//)})
                            (C {(grep)} {(description) (Lit_Other ':')})
                          ]
                          negated: False
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ ('API file: ') (${ VSub_Name file) 
                          (' should not contain descriptions in struct tags')
                        )
                      }
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:result) op:Equal rhs:{(1)} spids:[434])]
                      spids: [434]
                    )
                  ]
                  spids: [16777215 420]
                )
              ]
              spids: [16777215 438]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(grep)} {(json) (Lit_Other ':')} {(DQ (${ VSub_Name file))})
                            (C {(grep)} {(-Ee)} {(DQ (',[[:space:]]+omitempty|omitempty[[:space:]]+'))})
                          ]
                          negated: False
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ ('API file: ') (${ VSub_Name file) 
                          (
' should not contain leading or trailing spaces for omitempty directive'
                          )
                        )
                      }
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:result) op:Equal rhs:{(1)} spids:[480])]
                      spids: [480]
                    )
                  ]
                  spids: [16777215 466]
                )
              ]
              spids: [16777215 484]
            )
          ]
          spids: [321 486]
        )
      spids: [317 319]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:internal_types_files)
          op: Equal
          rhs: 
            {
              (DQ (${ VSub_Name KUBE_ROOT) ('/pkg/api/types.go ') (${ VSub_Name KUBE_ROOT) 
                (/pkg/apis/extensions/types.go)
              )
            }
          spids: [489]
        )
      ]
      spids: [489]
    )
    (ForEach
      iter_name: internal_types_file
      iter_words: [{($ VSub_Name '$internal_types_files')}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (LogicalNot
                              child: 
                                (BoolUnary
                                  op_id: BoolUnary_e
                                  child: {($ VSub_Name '$internal_types_file')}
                                )
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ ('Internal types file ') (${ VSub_Name internal_types_file) 
                          (' does not exist')
                        )
                      }
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:result) op:Equal rhs:{(1)} spids:[540])]
                      spids: [540]
                    )
                    (ControlFlow token:<ControlFlow_Continue continue>)
                  ]
                  spids: [16777215 526]
                )
              ]
              spids: [16777215 547]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(grep)} {(json) (Lit_Other ':')} 
                              {(DQ (${ VSub_Name internal_types_file))}
                            )
                            (C {(grep)} {(-v)} {(//)})
                            (C {(grep)} {(description) (Lit_Other ':')})
                          ]
                          negated: False
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('Internal API types should not contain descriptions'))})
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:result) op:Equal rhs:{(1)} spids:[591])]
                      spids: [591]
                    )
                  ]
                  spids: [16777215 581]
                )
              ]
              spids: [16777215 595]
            )
          ]
          spids: [510 597]
        )
      spids: [506 508]
    )
    (C {(exit)} {(${ VSub_Name result)})
  ]
)