(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)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:BINS)
          op: Equal
          rhs: 
            {
              (ArrayLiteralPart
                words: [
                  {(cmd/gendocs)}
                  {(cmd/genkubedocs)}
                  {(cmd/genman)}
                  {(cmd/genyaml)}
                  {(federation/cmd/genfeddocs)}
                ]
              )
            }
          spids: [94]
        )
      ]
      spids: [94]
    )
    (C {(make)} {(-C)} {(DQ (${ VSub_Name KUBE_ROOT))} 
      {(Lit_VarLike 'WHAT=') 
        (DQ 
          (BracedVarSub
            token: <VSub_Name BINS>
            bracket_op: (WholeArray op_id:Arith_Star)
            spids: [126 131]
          )
        )
      }
    )
    (C 
      {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') (ensure-temp-dir)}
    )
    (C {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') (gen-docs)} 
      {(DQ (${ VSub_Name KUBE_TEMP))}
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobNEqual
                      left: 
                        {
                          (DQ 
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [
                                    (C {(diff)} {(${ VSub_Name KUBE_ROOT) (/docs/.generated_docs)} 
                                      {(${ VSub_Name KUBE_TEMP) (/docs/.generated_docs)}
                                    )
                                  ]
                                )
                              left_token: <Left_CommandSub '$('>
                              spids: [167 179]
                            )
                          )
                        }
                      right: {(DQ )}
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} 
              {
                (DQ 
                  (
"List of generated docs doesn't match a freshly built list. Please run hack/update-generated-docs.sh"
                  )
                )
              }
            )
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [16777215 190]
        )
      ]
      spids: [16777215 204]
    )
    (While
      cond: [(Sentence child:(C {(read)} {(file)}) terminator:<Op_Semi ';'>)]
      body: 
        (DoGroup
          children: [
            (AndOr
              ops: [Op_DAmp]
              children: [
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobDEqual
                      left: {(DQ (${ VSub_Name file))}
                      right: {(DQ (docs/.generated_docs))}
                    )
                )
                (ControlFlow token:<ControlFlow_Continue continue>)
              ]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: 
                                {
                                  (DQ 
                                    (CommandSubPart
                                      command_list: 
                                        (CommandList
                                          children: [
                                            (C {(grep)} {(DQ (hack/generate-docs.sh))} 
                                              {(DQ (${ VSub_Name KUBE_ROOT) (/) (${ VSub_Name file))}
                                            )
                                          ]
                                        )
                                      left_token: <Left_CommandSub '$('>
                                      spids: [262 278]
                                    )
                                  )
                                }
                              right: {(DQ )}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ (${ VSub_Name file) 
                          (
" doesn't seem to have the correct boilerplate content for an autogenerated file."
                          )
                        )
                      }
                    )
                    (C {(echo)} {(DQ ('Please run hack/update-generated-docs.sh'))})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 289]
                )
              ]
              spids: [16777215 314]
            )
          ]
          spids: [220 316]
        )
      redirects: [
        (Redir
          op_id: Redir_Less
          fd: 16777215
          arg_word: {(DQ (${ VSub_Name KUBE_ROOT) (/docs/.generated_docs))}
          spids: [318]
        )
      ]
    )
  ]
)