(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:KUBE_REMOTE_RUNTIME_ROOT)
          op: Equal
          rhs: {(DQ (${ VSub_Name KUBE_ROOT) (/pkg/kubelet/apis/cri/v1alpha1/runtime))}
          spids: [75]
        )
      ]
      spids: [75]
    )
    (C {(source)} {(DQ (${ VSub_Name KUBE_ROOT) (/hack/lib/init.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 KUBE_REMOTE_RUNTIME_ROOT) (/_tmp/)})]
          spids: [106]
        )
      spids: [102 105]
    )
    (C {(trap)} {(cleanup)} {(EXIT)})
    (C {(mkdir)} {(-p)} {(${ VSub_Name KUBE_REMOTE_RUNTIME_ROOT) (/_tmp)})
    (C {(cp)} {(${ VSub_Name KUBE_REMOTE_RUNTIME_ROOT) (/api.pb.go)} 
      {(${ VSub_Name KUBE_REMOTE_RUNTIME_ROOT) (/_tmp/)}
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:ret) op:Equal rhs:{(0)} spids:[150])]
      spids: [150]
    )
    (SimpleCommand
      words: [{(DQ (${ VSub_Name KUBE_ROOT) (/hack/update-generated-runtime.sh))}]
      more_env: [(env_pair name:KUBE_VERBOSE val:{(3)} spids:[153])]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(diff)} {(-I)} {(DQ ('gzipped FileDescriptorProto'))} {(-I)} {(DQ (0x))} {(-Naupr)} 
          {(${ VSub_Name KUBE_REMOTE_RUNTIME_ROOT) (/_tmp/api.pb.go)} {(${ VSub_Name KUBE_REMOTE_RUNTIME_ROOT) (/api.pb.go)}
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:ret) op:Equal rhs:{($ VSub_QMark '$?')} spids:[191])]
          spids: [191]
        )
      ]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: (BoolBinary op_id:BoolBinary_eq left:{($ VSub_Name '$ret')} right:{(0)})
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ('Generated container runtime api is up to date.'))})
            (C {(cp)} {(${ VSub_Name KUBE_REMOTE_RUNTIME_ROOT) (/_tmp/api.pb.go)} 
              {(${ VSub_Name KUBE_REMOTE_RUNTIME_ROOT) (/)}
            )
          ]
          spids: [16777215 207]
        )
      ]
      else_action: [
        (C {(echo)} 
          {
            (DQ 
              (
'Generated container runtime api is out of date. Please run hack/update-generated-runtime.sh'
              )
            )
          }
        )
        (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
      ]
      spids: [229 243]
    )
  ]
)