(command.CommandList
  children: [
    (C {<set>} {<-o>} {<errexit>})
    (C {<set>} {<-o>} {<nounset>})
    (C {<set>} {<-o>} {<pipefail>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:KUBE_ROOT)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: (C {<dirname>} {(DQ (${ Id.VSub_Name BASH_SOURCE))})
              ) <'/..'>
            }
          spids: [63]
        )
      ]
    )
    (C {<source>} {(DQ (${ Id.VSub_Name KUBE_ROOT) <'/hack/lib/init.sh'>)})
    (C 
      {<kube> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <golang> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> 
        <setup_env>
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:BINS)
          op: assign_op.Equal
          rhs: 
            {
              (sh_array_literal
                left: <Id.Op_LParen _>
                words: [
                  {<'vendor/k8s.io/code-generator/cmd/go-to-protobuf'>}
                  {<'vendor/k8s.io/code-generator/cmd/go-to-protobuf/protoc-gen-gogo'>}
                ]
              )
            }
          spids: [94]
        )
      ]
    )
    (C {<make>} {<-C>} {(DQ (${ Id.VSub_Name KUBE_ROOT))} 
      {<Id.Lit_VarLike 'WHAT='> 
        (DQ 
          (braced_var_sub
            token: <Id.VSub_Name BINS>
            bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
          )
        )
      }
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.LogicalOr
                          left: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_z
                              child: 
                                {
                                  (DQ 
                                    (command_sub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: (C {<which>} {<protoc>})
                                    )
                                  )
                                }
                            )
                          right: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobNEqual
                              left: 
                                {
                                  (DQ 
                                    (command_sub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: (C {<protoc>} {<--version>})
                                    )
                                  )
                                }
                              right: {(DQ <'libprotoc 3.'>) <Id.Lit_Other '*'>}
                            )
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<echo>} 
              {(DQ <'Generating protobuf requires protoc 3.0.0-beta1 or newer. Please download and'>)}
            )
            (C {<echo>} {(DQ <'install the platform appropriate Protobuf package for your OS: '>)})
            (C {<echo>})
            (C {<echo>} {(DQ <'  https://github.com/google/protobuf/releases'>)})
            (C {<echo>})
            (C {<echo>} {(DQ <'WARNING: Protobuf changes are not being validated'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [126 160]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:gotoprotobuf)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C 
                    {<kube> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <util> <Id.Lit_Colon ':'> 
                      <Id.Lit_Colon ':'> <find-binary>
                    } {(DQ <go-to-protobuf>)}
                  )
              )
            }
          spids: [204]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PACKAGES)
          op: assign_op.Equal
          rhs: 
            {
              (sh_array_literal
                left: <Id.Op_LParen _>
                words: [
                  {<'k8s.io/apiserver/pkg/apis/example/v1'>}
                  {<'k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1'>}
                  {<'k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1'>}
                  {<'k8s.io/api/core/v1'>}
                  {<'k8s.io/api/policy/v1beta1'>}
                  {<'k8s.io/api/extensions/v1beta1'>}
                  {<'k8s.io/api/autoscaling/v1'>}
                  {<'k8s.io/api/authorization/v1'>}
                  {<'k8s.io/api/autoscaling/v2beta1'>}
                  {<'k8s.io/api/authorization/v1beta1'>}
                  {<'k8s.io/api/batch/v1'>}
                  {<'k8s.io/api/batch/v1beta1'>}
                  {<'k8s.io/api/batch/v2alpha1'>}
                  {<'k8s.io/api/apps/v1beta1'>}
                  {<'k8s.io/api/apps/v1beta2'>}
                  {<'k8s.io/api/apps/v1'>}
                  {<'k8s.io/api/authentication/v1'>}
                  {<'k8s.io/api/authentication/v1beta1'>}
                  {<'k8s.io/api/rbac/v1alpha1'>}
                  {<'k8s.io/api/rbac/v1beta1'>}
                  {<'k8s.io/api/certificates/v1beta1'>}
                  {<'k8s.io/api/imagepolicy/v1alpha1'>}
                  {<'k8s.io/api/scheduling/v1alpha1'>}
                  {<'k8s.io/api/settings/v1alpha1'>}
                  {<'k8s.io/api/storage/v1beta1'>}
                  {<'k8s.io/api/storage/v1'>}
                  {<'k8s.io/api/admissionregistration/v1alpha1'>}
                  {<'k8s.io/api/admission/v1alpha1'>}
                  {<'k8s.io/api/networking/v1'>}
                  {<'k8s.io/kubernetes/federation/apis/federation/v1beta1'>}
                  {<'k8s.io/metrics/pkg/apis/metrics/v1alpha1'>}
                  {<'k8s.io/metrics/pkg/apis/metrics/v1beta1'>}
                  {<'k8s.io/metrics/pkg/apis/custom_metrics/v1beta1'>}
                  {<'k8s.io/apiserver/pkg/apis/audit/v1alpha1'>}
                  {<'k8s.io/apiserver/pkg/apis/audit/v1beta1'>}
                ]
              )
            }
          spids: [220]
        )
      ]
    )
    (command.Simple
      words: [
        {(DQ (${ Id.VSub_Name gotoprotobuf))}
        {<--proto-import> <Id.Lit_Equals '='> (DQ (${ Id.VSub_Name KUBE_ROOT) <'/vendor'>)}
        {<--proto-import> <Id.Lit_Equals '='> 
          (DQ (${ Id.VSub_Name KUBE_ROOT) <'/third_party/protobuf'>)
        }
        {<--packages> <Id.Lit_Equals '='> 
          (command_sub
            left_token: <Id.Left_DollarParen '$('>
            child: 
              (command.CommandList
                children: [
                  (command.Sentence
                    child: 
                      (command.ShAssignment
                        pairs: [
                          (assign_pair
                            lhs: (sh_lhs_expr.Name name:IFS)
                            op: assign_op.Equal
                            rhs: {<Id.Lit_Comma ','>}
                            spids: [389]
                          )
                        ]
                      )
                    terminator: <Id.Op_Semi _>
                  )
                  (C {<echo>} 
                    {
                      (DQ 
                        (braced_var_sub
                          token: <Id.VSub_Name PACKAGES>
                          bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                        )
                      )
                    }
                  )
                ]
              )
          )
        }
      ]
      more_env: [
        (env_pair
          name: PATH
          val: {(DQ (${ Id.VSub_Name KUBE_ROOT) <'/_output/bin:'> (${ Id.VSub_Name PATH))}
          spids: [343]
        )
      ]
      do_fork: T
    )
    (C {(DQ ($ Id.VSub_At '$@'))})
  ]
)