(command.CommandList
  children: [
    (command.Simple
      blame_tok: <set>
      more_env: []
      words: [{<set>} {<-o>} {<errexit>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <set>
      more_env: []
      words: [{<set>} {<-o>} {<nounset>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <set>
      more_env: []
      words: [{<set>} {<-o>} {<pipefail>}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'MOUNTER_IMAGE='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'MOUNTER_IMAGE='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MOUNTER_IMAGE='> name:MOUNTER_IMAGE)
          op: assign_op.Equal
          rhs: 
            {
              (BracedVarSub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Number 1>
                var_name: 1
                suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{})
                right: <Id.Right_DollarBrace '}'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'MOUNTER_PATH='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'MOUNTER_PATH='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MOUNTER_PATH='> name:MOUNTER_PATH)
          op: assign_op.Equal
          rhs: {<'/home/kubernetes/flexvolume_mounter'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'VOLUME_PLUGIN_DIR='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'VOLUME_PLUGIN_DIR='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VOLUME_PLUGIN_DIR='> name:VOLUME_PLUGIN_DIR)
          op: assign_op.Equal
          rhs: {<'/etc/srv/kubernetes/kubelet-plugins/volume/exec'>}
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name_tok: <usage>
      name: usage
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'usage: '> ($ Id.VSub_Number 0) <' imagename[:tag]'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ 
                    <
'    imagename  Name of a Container Registry image. By default the latest image is used.'
                    >
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'    :tag       Container Registry image tag.'>)}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {<-z>}
                        {(${ Id.VSub_Name MOUNTER_IMAGE)}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'ERROR: No Container Registry mounter image is specified.'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <usage>
              more_env: []
              words: [{<usage>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [147 160]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShFunction
      name_tok: <umount_silent>
      name: umount_silent
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <umount>
                  more_env: []
                  words: [{<umount>} {<-l>} {($ Id.VSub_Number 1)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_AndGreat '&>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <'/bin/true'>
                  more_env: []
                  words: [{<'/bin/true'>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <kubelet_wait>
      name: kubelet_wait
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'timeout='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'timeout='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'timeout='> name:timeout)
                  op: assign_op.Equal
                  rhs: {<60>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'kubelet_readonly_port='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'kubelet_readonly_port='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'kubelet_readonly_port='>
                      name: kubelet_readonly_port
                    )
                  op: assign_op.Equal
                  rhs: {<10255>}
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_Until until>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          left: <Id.KW_DLeftBracket '[['>
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_eq
                              left: {($ Id.VSub_DollarName timeout)}
                              right: {<0>}
                            )
                          right: <Id.Lit_DRightBracket ']]'>
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Simple
                      blame_tok: <printf>
                      more_env: []
                      words: [{<printf>} {(DQ <.>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: 
                                            {
                                              (CommandSub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (command.Simple
                                                    blame_tok: <curl>
                                                    more_env: []
                                                    words: [
                                                      {<curl>}
                                                      {<-s>}
                                                      {<http> <Id.Lit_Colon ':'> <'//localhost'> 
                                                        <Id.Lit_Colon ':'> (${ Id.VSub_Name kubelet_readonly_port) <'/healthz'>
                                                      }
                                                    ]
                                                    redirects: []
                                                    do_fork: T
                                                  )
                                                right: <Id.Eof_RParen _>
                                              )
                                            }
                                          right: {(DQ <ok>)}
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [249 279]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <sleep>
                      more_env: []
                      words: [{<sleep>} {<1>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'timeout='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'timeout='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'timeout='> name:timeout)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                left: <Id.Left_DollarDParen '$(('>
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Minus
                                    left: ($ Id.Lit_ArithVarLike timeout)
                                    right: {<Id.Lit_Digits 1>}
                                  )
                                right: <Id.Right_DollarDParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <flex_clean>
      name: flex_clean
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'An error has occurred. Cleaning up...'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <umount_silent>
              more_env: []
              words: [{<umount_silent>} {(${ Id.VSub_Name VOLUME_PLUGIN_DIR)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<-rf>} {(${ Id.VSub_Name VOLUME_PLUGIN_DIR)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <umount_silent>
              more_env: []
              words: [{<umount_silent>} {(${ Id.VSub_Name MOUNTER_PATH) <'/var/lib/kubelet'>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <umount_silent>
              more_env: []
              words: [{<umount_silent>} {(${ Id.VSub_Name MOUNTER_PATH)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<-rf>} {(${ Id.VSub_Name MOUNTER_PATH)}]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-n>}
                                {
                                  (BracedVarSub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name IMAGE_URL>
                                    var_name: IMAGE_URL
                                    suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{})
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                }
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <docker>
                          more_env: []
                          words: [{<docker>} {<rmi>} {<-f>} {(${ Id.VSub_Name IMAGE_URL)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_AndGreat '&>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <'/bin/true'>
                          more_env: []
                          words: [{<'/bin/true'>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  spids: [384 398]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-n>}
                                {
                                  (BracedVarSub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name MOUNTER_DEFAULT_NAME>
                                    var_name: MOUNTER_DEFAULT_NAME
                                    suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{})
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                }
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <docker>
                          more_env: []
                          words: [{<docker>} {<rm>} {<-f>} {(${ Id.VSub_Name MOUNTER_DEFAULT_NAME)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_AndGreat '&>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <'/bin/true'>
                          more_env: []
                          words: [{<'/bin/true'>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  spids: [423 437]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <trap>
      more_env: []
      words: [{<trap>} {<flex_clean>} {<ERR>}]
      redirects: []
      do_fork: T
    )
    (command.ShFunction
      name_tok: <generate_chroot_wrapper>
      name: generate_chroot_wrapper
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<Id.KW_Bang '!'>}
                                {<-d>}
                                {(${ Id.VSub_Name MOUNTER_PATH) <'/flexvolume'>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ 
                            <
'Failed to set up FlexVolume driver: cannot find directory \'/flexvolume\' in the mount utility image.'
                            >
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [484 500]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [driver_dir]
              iterable: 
                (for_iter.Words
                  words: [{(${ Id.VSub_Name MOUNTER_PATH) <'/flexvolume/'> <Id.Lit_Star '*'>}]
                )
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {<-d>}
                                        {(DQ ($ Id.VSub_DollarName driver_dir))}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'filecount='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'filecount='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'filecount='>
                                      name: filecount
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (command.Simple
                                                blame_tok: <ls>
                                                more_env: []
                                                words: [
                                                  {<ls>}
                                                  {<-1>}
                                                  {($ Id.VSub_DollarName driver_dir)}
                                                ]
                                                redirects: []
                                                do_fork: T
                                              )
                                              (command.Simple
                                                blame_tok: <wc>
                                                more_env: []
                                                words: [{<wc>} {<-l>}]
                                                redirects: []
                                                do_fork: T
                                              )
                                            ]
                                            ops: [<Id.Op_Pipe _>]
                                          )
                                        right: <Id.Eof_RParen _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.Simple
                                              blame_tok: <Id.Lit_LBracket '['>
                                              more_env: []
                                              words: [
                                                {<Id.Lit_LBracket '['>}
                                                {($ Id.VSub_DollarName filecount)}
                                                {<-gt>}
                                                {<1>}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [
                                        {<echo>}
                                        {
                                          (DQ 
                                            <
'ERROR: Expected 1 file in the FlexVolume directory but found '
                                            > ($ Id.VSub_DollarName filecount) <.>
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Exit exit>
                                      arg_word: {<1>}
                                    )
                                  ]
                                  spids: [569 582]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'driver_file='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'driver_file='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'driver_file='>
                                      name: driver_file
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (command.Simple
                                                blame_tok: <ls>
                                                more_env: []
                                                words: [{<ls>} {($ Id.VSub_DollarName driver_dir)}]
                                                redirects: []
                                                do_fork: T
                                              )
                                              (command.Simple
                                                blame_tok: <head>
                                                more_env: []
                                                words: [{<head>} {<-n>} {<1>}]
                                                redirects: []
                                                do_fork: T
                                              )
                                            ]
                                            ops: [<Id.Op_Pipe _>]
                                          )
                                        right: <Id.Eof_RParen _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'driver_path='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'driver_path='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'driver_path='>
                                      name: driver_path
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {<'flexvolume/'> 
                                      (CommandSub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.Simple
                                            blame_tok: <basename>
                                            more_env: []
                                            words: [{<basename>} {($ Id.VSub_DollarName driver_dir)}]
                                            redirects: []
                                            do_fork: T
                                          )
                                        right: <Id.Eof_RParen _>
                                      ) <'/'> (${ Id.VSub_Name driver_file)
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'wrapper_dir='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'wrapper_dir='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'wrapper_dir='>
                                      name: wrapper_dir
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {(${ Id.VSub_Name VOLUME_PLUGIN_DIR) <'/'> 
                                      (CommandSub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.Simple
                                            blame_tok: <basename>
                                            more_env: []
                                            words: [{<basename>} {($ Id.VSub_DollarName driver_dir)}]
                                            redirects: []
                                            do_fork: T
                                          )
                                        right: <Id.Eof_RParen _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'wrapper_path='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'wrapper_path='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'wrapper_path='>
                                      name: wrapper_path
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {(${ Id.VSub_Name wrapper_dir) <'/'> (${ Id.VSub_Name driver_file)}
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <mkdir>
                              more_env: []
                              words: [{<mkdir>} {<-p>} {($ Id.VSub_DollarName wrapper_dir)}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <cat>
                              more_env: []
                              words: [{<cat>}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName wrapper_path)}
                                )
                                (Redir
                                  op: <Id.Redir_DLess '<<'>
                                  loc: (redir_loc.Fd fd:0)
                                  arg: 
                                    (redir_param.HereDoc
                                      here_begin: {<EOF>}
                                      here_end_tok: <Id.Undefined_Tok ''>
                                      stdin_parts: [
                                        <'#!/bin/bash\n'>
                                        <'chroot '>
                                        (${ Id.VSub_Name MOUNTER_PATH)
                                        <' '>
                                        (${ Id.VSub_Name driver_path)
                                        <' '>
                                        <Id.Right_DoubleQuote '"'>
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\$'>
                                          ch: '$'
                                        )
                                        <'@'>
                                        <Id.Right_DoubleQuote '"'>
                                        <'\n'>
                                      ]
                                    )
                                )
                              ]
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <chmod>
                              more_env: []
                              words: [{<chmod>} {<755>} {($ Id.VSub_DollarName wrapper_path)}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {
                                  (DQ <'FlexVolume driver installed at '> 
                                    (${ Id.VSub_Name wrapper_path)
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [536 549]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>}] redirects:[] do_fork:T)
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'Importing mount utility image from Container Registry...'>)}]
      redirects: []
      do_fork: T
    )
    (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>}] redirects:[] do_fork:T)
    (command.ShAssignment
      left: <Id.Lit_VarLike 'METADATA='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'METADATA='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'METADATA='> name:METADATA)
          op: assign_op.Equal
          rhs: {<http> <Id.Lit_Colon ':'> <'//metadata.google.internal/computeMetadata/v1'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'SVC_ACCT_ENDPOINT='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'SVC_ACCT_ENDPOINT='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SVC_ACCT_ENDPOINT='> name:SVC_ACCT_ENDPOINT)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName METADATA) <'/instance/service-accounts/default'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'ACCESS_TOKEN='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'ACCESS_TOKEN='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ACCESS_TOKEN='> name:ACCESS_TOKEN)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Pipeline
                    children: [
                      (command.Simple
                        blame_tok: <curl>
                        more_env: []
                        words: [
                          {<curl>}
                          {<-s>}
                          {<-H>}
                          {(SQ <'Metadata-Flavor: Google'>)}
                          {($ Id.VSub_DollarName SVC_ACCT_ENDPOINT) <'/token'>}
                        ]
                        redirects: []
                        do_fork: T
                      )
                      (command.Simple
                        blame_tok: <cut>
                        more_env: []
                        words: [{<cut>} {<-d> (SQ <'"'>)} {<-f>} {<4>}]
                        redirects: []
                        do_fork: T
                      )
                    ]
                    ops: [<Id.Op_Pipe _>]
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'PROJECT_ID='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'PROJECT_ID='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROJECT_ID='> name:PROJECT_ID)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <curl>
                    more_env: []
                    words: [
                      {<curl>}
                      {<-s>}
                      {<-H>}
                      {(SQ <'Metadata-Flavor: Google'>)}
                      {($ Id.VSub_DollarName METADATA) <'/project/project-id'>}
                    ]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'IMAGE_URL='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'IMAGE_URL='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IMAGE_URL='> name:IMAGE_URL)
          op: assign_op.Equal
          rhs: {<'gcr.io/'> (${ Id.VSub_Name PROJECT_ID) <'/'> (${ Id.VSub_Name MOUNTER_IMAGE)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'MOUNTER_DEFAULT_NAME='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'MOUNTER_DEFAULT_NAME='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'MOUNTER_DEFAULT_NAME='>
              name: MOUNTER_DEFAULT_NAME
            )
          op: assign_op.Equal
          rhs: {<flexvolume_mounter>}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <sudo>
      more_env: []
      words: [
        {<sudo>}
        {<-u>}
        {(${ Id.VSub_Name SUDO_USER)}
        {<docker>}
        {<login>}
        {<-u>}
        {<_token>}
        {<-p>}
        {($ Id.VSub_DollarName ACCESS_TOKEN)}
        {<https> <Id.Lit_Colon ':'> <'//gcr.io'>}
      ]
      redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      blame_tok: <sudo>
      more_env: []
      words: [
        {<sudo>}
        {<-u>}
        {(${ Id.VSub_Name SUDO_USER)}
        {<docker>}
        {<run>}
        {<--name> <Id.Lit_Equals '='> (${ Id.VSub_Name MOUNTER_DEFAULT_NAME)}
        {(${ Id.VSub_Name IMAGE_URL)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <docker>
      more_env: []
      words: [{<docker>} {<export>} {(${ Id.VSub_Name MOUNTER_DEFAULT_NAME)}]
      redirects: [
        (Redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {<'/tmp/'> (${ Id.VSub_Name MOUNTER_DEFAULT_NAME) <.tar>}
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <docker>
      more_env: []
      words: [{<docker>} {<rm>} {(${ Id.VSub_Name MOUNTER_DEFAULT_NAME)}]
      redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      blame_tok: <docker>
      more_env: []
      words: [{<docker>} {<rmi>} {(${ Id.VSub_Name IMAGE_URL)}]
      redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>}] redirects:[] do_fork:T)
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'Loading mount utilities onto this instance...'>)}]
      redirects: []
      do_fork: T
    )
    (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>}] redirects:[] do_fork:T)
    (command.Simple
      blame_tok: <mkdir>
      more_env: []
      words: [{<mkdir>} {<-p>} {(${ Id.VSub_Name MOUNTER_PATH)}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <tar>
      more_env: []
      words: [
        {<tar>}
        {<xf>}
        {<'/tmp/'> (${ Id.VSub_Name MOUNTER_DEFAULT_NAME) <.tar>}
        {<-C>}
        {(${ Id.VSub_Name MOUNTER_PATH)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <mkdir>
      more_env: []
      words: [{<mkdir>} {<-p>} {(${ Id.VSub_Name MOUNTER_PATH) <'/var/lib/kubelet'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <mount>
      more_env: []
      words: [
        {<mount>}
        {<--rbind>}
        {<'/var/lib/kubelet/'>}
        {(${ Id.VSub_Name MOUNTER_PATH) <'/var/lib/kubelet'>}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <mount>
      more_env: []
      words: [{<mount>} {<--make-rshared>} {(${ Id.VSub_Name MOUNTER_PATH) <'/var/lib/kubelet'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <mount>
      more_env: []
      words: [{<mount>} {<--bind>} {(${ Id.VSub_Name MOUNTER_PATH)} {(${ Id.VSub_Name MOUNTER_PATH)}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <mount>
      more_env: []
      words: [
        {<mount>}
        {<-o>}
        {<remount> <Id.Lit_Comma ','> <dev> <Id.Lit_Comma ','> <exec>}
        {(${ Id.VSub_Name MOUNTER_PATH)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>}] redirects:[] do_fork:T)
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'Setting up FlexVolume driver...'>)}]
      redirects: []
      do_fork: T
    )
    (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>}] redirects:[] do_fork:T)
    (command.Simple
      blame_tok: <mkdir>
      more_env: []
      words: [{<mkdir>} {<-p>} {(${ Id.VSub_Name VOLUME_PLUGIN_DIR)}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <mount>
      more_env: []
      words: [
        {<mount>}
        {<--bind>}
        {(${ Id.VSub_Name VOLUME_PLUGIN_DIR)}
        {(${ Id.VSub_Name VOLUME_PLUGIN_DIR)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <mount>
      more_env: []
      words: [
        {<mount>}
        {<-o>}
        {<remount> <Id.Lit_Comma ','> <exec>}
        {(${ Id.VSub_Name VOLUME_PLUGIN_DIR)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <generate_chroot_wrapper>
      more_env: []
      words: [{<generate_chroot_wrapper>}]
      redirects: []
      do_fork: T
    )
    (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>}] redirects:[] do_fork:T)
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'Restarting Kubelet...'>)}]
      redirects: []
      do_fork: T
    )
    (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>}] redirects:[] do_fork:T)
    (command.Simple
      blame_tok: <systemctl>
      more_env: []
      words: [{<systemctl>} {<restart>} {<kubelet.service>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <kubelet_wait>
      more_env: []
      words: [{<kubelet_wait>}]
      redirects: []
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {($ Id.VSub_QMark '?')}
                        {<-eq>}
                        {<0>}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'FlexVolume is ready.'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [1067 1080]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [{<echo>} {(DQ <'ERROR: Timed out after 1 minute waiting for kubelet restart.'>)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
  ]
)