(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]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DEVICE_PLUGIN_ROOT)
          op: Equal
          rhs: {(DQ (${ VSub_Name KUBE_ROOT) (/pkg/kubelet/apis/deviceplugin/v1alpha1/))}
          spids: [75]
        )
      ]
      spids: [75]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ERROR)
          op: Equal
          rhs: 
            {
              (DQ 
                (
'Device plugin api is out of date. Please run hack/update-generated-device-plugin.sh'
                )
              )
            }
          spids: [83]
        )
      ]
      spids: [83]
    )
    (C {(source)} {(DQ (${ VSub_Name KUBE_ROOT) (/hack/lib/protoc.sh))})
    (C {(kube) (Lit_Other ':') (Lit_Other ':') (golang) (Lit_Other ':') (Lit_Other ':') (setup_env)})
    (FuncDef
      name: cleanup
      body: 
        (BraceGroup
          children: [(C {(rm)} {(-rf)} {(${ VSub_Name DEVICE_PLUGIN_ROOT) (/_tmp/)})]
          spids: [111]
        )
      spids: [107 110]
    )
    (C {(trap)} {(cleanup)} {(EXIT)})
    (C {(mkdir)} {(-p)} {(${ VSub_Name DEVICE_PLUGIN_ROOT) (/_tmp)})
    (C {(cp)} {(${ VSub_Name DEVICE_PLUGIN_ROOT) (/api.pb.go)} 
      {(${ VSub_Name DEVICE_PLUGIN_ROOT) (/_tmp/)}
    )
    (SimpleCommand
      words: [{(DQ (${ VSub_Name KUBE_ROOT) (/hack/update-generated-device-plugin.sh))}]
      more_env: [(env_pair name:KUBE_VERBOSE val:{(3)} spids:[155])]
    )
    (C {(kube) (Lit_Other ':') (Lit_Other ':') (protoc) (Lit_Other ':') (Lit_Other ':') (diff)} 
      {(DQ (${ VSub_Name DEVICE_PLUGIN_ROOT) (/api.pb.go))} {(DQ (${ VSub_Name DEVICE_PLUGIN_ROOT) (/_tmp/api.pb.go))} {(${ VSub_Name ERROR)}
    )
    (C {(echo)} {(DQ ('Generated device plugin api is up to date.'))})
  ]
)