(command.CommandList
  children: [
    (C {<set>} {<-e>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Pipeline
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_EqualTilde
                              left: {(DQ ($ Id.VSub_Number '$0'))}
                              right: {(DQ <'scripts/genproto.sh'>)}
                            )
                        )
                      ]
                      negated: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<echo>} {(DQ <'must be run from repository root'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<255>})
          ]
          spids: [20 39]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Pipeline
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_EqualTilde
                              left: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: (C {<protoc>} {<--version>})
                                  )
                                }
                              right: {(DQ <3.1.0>)}
                            )
                        )
                      ]
                      negated: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<echo>} {(DQ <'could not find protoc 3.1.0, is it installed + in PATH?'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<255>})
          ]
          spids: [56 77]
        )
      ]
    )
    (C {<export>} {<Id.Lit_VarLike 'PATH='> <.> <Id.Lit_Colon ':'> (${ Id.VSub_Name PATH)})
    (C {<cd>} {($ Id.VSub_DollarName '$GOPATH') <'/src/github.com/rkt/rkt'>})
    (C {<echo>} {(DQ <'building protoc-gen-go'>)})
    (C {<pushd>} {<'vendor/github.com/golang/protobuf/protoc-gen-go'>})
    (C {<go>} {<build>})
    (C {<mv>} {<protoc-gen-go>} 
      {
        (command_sub
          left_token: <Id.Left_DollarParen '$('>
          child: (C {<dirs>} {<-l>} {<Id.Lit_Other '+'> <1>})
        )
      }
    )
    (C {<popd>})
    (C {<trap>} {(SQ <'rm -f "protoc-gen-go"'>)} {<EXIT>})
    (C {<echo>} {(DQ <'generating code'>)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:API_DIR)
          op: assign_op.Equal
          rhs: {(DQ <'api/v1alpha'>)}
          spids: [154]
        )
      ]
    )
    (C {<protoc>} {<-I>} {(DQ (${ Id.VSub_Name API_DIR))} 
      {(DQ (${ Id.VSub_Name API_DIR)) <'/'> <Id.Lit_Star '*'> <.proto>} 
      {<--go_out> <Id.Lit_Equals '='> <Id.Lit_VarLike 'plugins='> <grpc> <Id.Lit_Colon ':'> 
        (DQ (${ Id.VSub_Name API_DIR))
      }
    )
  ]
)