(command.CommandList
  children: [
    (C {(KW_Set set)} {(-ex)})
    (C {(pushd)} 
      {
        (command_sub
          left_token: <Left_DollarParen '$('>
          command_list: (command.CommandList children:[(C {(dirname)} {($ VSub_Number '$0')})])
        ) (/..)
      }
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Lit_LBracket '[')} {(-z)} {(DQ ($ VSub_DollarName '$PROTOC'))} {(Lit_RBracket ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_LBracket '[')} {(-x)} {(cmake/build/Debug/protoc.exe)} 
                          {(Lit_RBracket ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:PROTOC)
                          op: Equal
                          rhs: {(cmake/build/Debug/protoc.exe)}
                        )
                      ]
                    )
                  ]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_LBracket '[')} {(-x)} {(cmake/build/Release/protoc.exe)} 
                          {(Lit_RBracket ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:PROTOC)
                          op: Equal
                          rhs: {(cmake/build/Release/protoc.exe)}
                        )
                      ]
                    )
                  ]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(Lit_LBracket '[')} {(-x)} {(src/protoc)} {(Lit_RBracket ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:PROTOC)
                          op: Equal
                          rhs: {(src/protoc)}
                        )
                      ]
                    )
                  ]
                )
              ]
              else_action: [
                (C {(echo)} {(DQ ('Unable to find protocol buffer compiler.'))})
                (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
              ]
            )
          ]
        )
      ]
    )
    (C {($ VSub_DollarName '$PROTOC')} {(-Isrc)} 
      {(--csharp_out) (Lit_Equals '=') (csharp/src/Google.Protobuf)} {(--csharp_opt) (Lit_Equals '=') (Lit_VarLike 'base_namespace=') (Google.Protobuf)} 
      {(src/google/protobuf/descriptor.proto)} {(src/google/protobuf/any.proto)} {(src/google/protobuf/api.proto)} 
      {(src/google/protobuf/duration.proto)} {(src/google/protobuf/empty.proto)} {(src/google/protobuf/field_mask.proto)} 
      {(src/google/protobuf/source_context.proto)} {(src/google/protobuf/struct.proto)} {(src/google/protobuf/timestamp.proto)} 
      {(src/google/protobuf/type.proto)} {(src/google/protobuf/wrappers.proto)}
    )
    (C {($ VSub_DollarName '$PROTOC')} {(-Isrc)} 
      {(--csharp_out) (Lit_Equals '=') (csharp/src/Google.Protobuf.Test)} {(--csharp_opt) (Lit_Equals '=') (Lit_VarLike 'base_namespace=') (Google.Protobuf)} 
      {(src/google/protobuf/map_unittest_proto3.proto)} {(src/google/protobuf/unittest_proto3.proto)} {(src/google/protobuf/unittest_import_proto3.proto)} 
      {(src/google/protobuf/unittest_import_public_proto3.proto)} {(src/google/protobuf/unittest_well_known_types.proto)}
    )
    (C {($ VSub_DollarName '$PROTOC')} {(-Icsharp/protos)} 
      {(--csharp_out) (Lit_Equals '=') (csharp/src/Google.Protobuf.Test)} {(--csharp_opt) (Lit_Equals '=') (Lit_VarLike 'base_namespace=') (UnitTest.Issues)} 
      {(csharp/protos/unittest_issues.proto)}
    )
    (C {($ VSub_DollarName '$PROTOC')} {(-Iexamples)} 
      {(--csharp_out) (Lit_Equals '=') (csharp/src/AddressBook)} {(examples/addressbook.proto)}
    )
    (C {($ VSub_DollarName '$PROTOC')} {(-Iconformance)} {(-Isrc)} 
      {(--csharp_out) (Lit_Equals '=') (csharp/src/Google.Protobuf.Conformance)} {(conformance/conformance.proto)}
    )
  ]
)