(command.CommandList
  children: [
    (C {(Id.KW_Set set)} {(-o)} {(errexit)})
    (C {(Id.KW_Set set)} {(-o)} {(nounset)})
    (C {(Id.KW_Set set)} {(-o)} {(pipefail)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:KUBE_ROOT)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: (Token id:Id.VSub_Name val:KUBE_ROOT span_id:65)
                suffix_op: 
                  (suffix_op.Unary
                    op_id: Id.VTest_ColonHyphen
                    arg_word: 
                      {
                        (command_sub
                          left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:67)
                          command_list: 
                            (command.CommandList
                              children: [(C {(dirname)} {(DQ (${ Id.VSub_Name BASH_SOURCE))})]
                            )
                        ) (Id.Lit_Slash /) (..)
                      }
                  )
              )
            }
          spids: [63]
        )
      ]
    )
    (C {(source)} {(DQ (${ Id.VSub_Name KUBE_ROOT) (/cluster/kube-util.sh))})
    (C {(source)} {(DQ (${ Id.VSub_Name KUBE_ROOT) (/cluster/clientbin.sh))})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: 
                    (bool_expr.Unary
                      op_id: Id.BoolUnary_z
                      child: 
                        {
                          (DQ 
                            (braced_var_sub
                              token: (Token id:Id.VSub_Name val:KUBEADM_PATH span_id:113)
                              suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                            )
                          )
                        }
                    )
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:119)
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:kubeadm)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:125)
                        command_list: 
                          (command.CommandList
                            children: [(C {(get_bin)} {(DQ (kubeadm))} {(DQ (cmd/kubeadm))})]
                          )
                      )
                    }
                  spids: [124]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.LogicalNot
                              child: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_x
                                  child: {(DQ ($ Id.VSub_DollarName '$kubeadm'))}
                                )
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:154)
                    )
                  ]
                  action: [
                    (C {(print_error)} {(DQ (kubeadm))})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:166)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [141 156]
                )
              ]
            )
          ]
          spids: [105 121]
        )
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: 
                    (bool_expr.LogicalNot
                      child: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_x
                          child: {(DQ (${ Id.VSub_Name KUBEADM_PATH))}
                        )
                    )
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:188)
            )
          ]
          action: [
            (command.BraceGroup
              children: [
                (C {(echo)} 
                  {
                    (DQ ("KUBEADM_PATH environment variable set to '") (${ Id.VSub_Name KUBEADM_PATH) 
                      ("', but ")
                    )
                  }
                )
                (C {(echo)} {(DQ ("this doesn't seem to be a valid executable."))})
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:216)
                  fd: -1
                  arg_word: {(2)}
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:220)
              arg_word: {(1)}
            )
          ]
          spids: [173 190]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:kubeadm)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (braced_var_sub
                  token: (Token id:Id.VSub_Name val:KUBEADM_PATH span_id:229)
                  suffix_op: 
                    (suffix_op.Unary
                      op_id: Id.VTest_ColonHyphen
                      arg_word: {(${ Id.VSub_Name kubeadm)}
                    )
                )
              )
            }
          spids: [226]
        )
      ]
    )
    (C {(DQ (${ Id.VSub_Name kubeadm))} 
      {
        (DQ 
          (braced_var_sub
            token: (Token id:Id.VSub_At val:'@' span_id:246)
            suffix_op: (suffix_op.Unary op_id:Id.VTest_Plus arg_word:{($ Id.VSub_At '$@')})
          )
        )
      }
    )
  ]
)