(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=') (federation/cmd/federation-apiserver)}
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:apiserver)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (C 
                        {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') 
                          (find-binary)
                        } {(DQ (federation-apiserver))}
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [109 121]
              )
            }
          spids: [108]
        )
      ]
      spids: [108]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:SPECROOT)
          op: Equal
          rhs: {(DQ (${ VSub_Name KUBE_ROOT) (/federation/apis/swagger-spec))}
          spids: [124]
        )
      ]
      spids: [124]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:TMP_SPECROOT)
          op: Equal
          rhs: {(DQ (${ VSub_Name KUBE_ROOT) (/_tmp_federation/swagger-spec))}
          spids: [132]
        )
      ]
      spids: [132]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:_tmp)
          op: Equal
          rhs: {(DQ (${ VSub_Name KUBE_ROOT) (/_tmp_federation))}
          spids: [140]
        )
      ]
      spids: [140]
    )
    (C {(mkdir)} {(-p)} {(DQ (${ VSub_Name _tmp))})
    (C {(trap)} {(DQ ('rm -rf ') (${ VSub_Name _tmp))} {(EXIT)} {(SIGINT)})
    (C {(cp)} {(-a)} {(DQ (${ VSub_Name SPECROOT))} {(DQ (${ VSub_Name TMP_SPECROOT))})
    (C {(DQ (${ VSub_Name KUBE_ROOT) (/hack/update-federation-swagger-spec.sh))})
    (C {(echo)} 
      {
        (DQ ('diffing ') (${ VSub_Name SPECROOT) (' against freshly generated federation swagger spec'))
      }
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:ret) op:Equal rhs:{(0)} spids:[206])]
      spids: [206]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(diff)} {(-Naupr)} {(-I)} {(SQ <'Auto generated by'>)} {(DQ (${ VSub_Name SPECROOT))} 
          {(DQ (${ VSub_Name TMP_SPECROOT))}
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:ret) op:Equal rhs:{($ VSub_QMark '$?')} spids:[233])]
          spids: [233]
        )
      ]
    )
    (C {(cp)} {(-a)} {(${ VSub_Name TMP_SPECROOT)} {(DQ (${ VSub_Name KUBE_ROOT) (/federation/apis))})
    (If
      arms: [
        (if_arm
          cond: [
            (DBracket
              expr: (BoolBinary op_id:BoolBinary_eq left:{($ VSub_Name '$ret')} right:{(0)})
            )
          ]
          action: [(C {(echo)} {(DQ (${ VSub_Name SPECROOT) (' up to date.'))})]
          spids: [16777215 263]
        )
      ]
      else_action: [
        (C {(echo)} 
          {
            (DQ (${ VSub_Name SPECROOT) 
              (' is out of date. Please run hack/update-federation-swagger-spec.sh')
            )
          }
        )
        (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
      ]
      spids: [275 292]
    )
  ]
)