(command.CommandList
  children: [
    (command.ShFunction
      name_tok: <get_variable_value>
      name: get_variable_value
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'FILENAME='> ($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'VARNAME='> ($ Id.VSub_Number 2)}]
              redirects: []
              do_fork: T
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <awk>
                  more_env: []
                  words: [
                    {<awk>}
                    {
                      (DQ <'\n'> <'    BEGIN { start = 0; }\n'> <'    /^'> 
                        ($ Id.VSub_DollarName VARNAME) <' =/ { start = 1; }\n'> <'    { if (start) { print '> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                          ch: '$'
                        ) <'0; } }\n'> <'    /'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\\\'>
                          ch: '\\'
                        ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'/ { next; }\n'> 
                        <'    { start = 0; }\n'> <'  '>
                      )
                    }
                    {($ Id.VSub_DollarName FILENAME)}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sed>
                  more_env: []
                  words: [{<sed>} {(DQ <'s/^'> ($ Id.VSub_DollarName VARNAME) <' =//'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sed>
                  more_env: []
                  words: [
                    {<sed>}
                    {
                      (DQ <'s/[ '> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\\\'>
                          ch: '\\'
                        ) <']//g'>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [
                    {<grep>}
                    {<-v>}
                    {
                      (DQ <'^'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') 
                        <Id.Lit_Dollar '$'>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-v>} {(DQ <'^'> <Id.Lit_Dollar '$'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: [(EnvPair left:<Id.Lit_VarLike 'LC_ALL='> name:LC_ALL val:{<C>})]
                  words: [{<sort>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <uniq>
                  more_env: []
                  words: [{<uniq>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [
                <Id.Op_Pipe _>
                <Id.Op_Pipe _>
                <Id.Op_Pipe _>
                <Id.Op_Pipe _>
                <Id.Op_Pipe _>
                <Id.Op_Pipe _>
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <get_header_files>
      name: get_header_files
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <get_variable_value>
                  more_env: []
                  words: [{<get_variable_value>} {($ Id.VSub_At '@')}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {(SQ <'\\.h$'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <get_source_files>
      name: get_source_files
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <get_variable_value>
                  more_env: []
                  words: [{<get_variable_value>} {($ Id.VSub_At '@')}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {(DQ <cc> <Id.Lit_Dollar '$'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <get_proto_files_blacklisted>
      name: get_proto_files_blacklisted
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <get_proto_files>
                  more_env: []
                  words: [{<get_proto_files>} {($ Id.VSub_At '@')}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sed>
                  more_env: []
                  words: [{<sed>} {(SQ <'/^google\\/protobuf\\/unittest_enormous_descriptor.proto$/d'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <get_proto_files>
      name: get_proto_files
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <get_variable_value>
                  more_env: []
                  words: [{<get_variable_value>} {($ Id.VSub_At '@')}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {(DQ <pb.cc> <Id.Lit_Dollar '$'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sed>
                  more_env: []
                  words: [{<sed>} {(DQ <'s/pb.cc/proto/'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <sort_files>
      name: sort_files
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.ForEach
                  keyword: <Id.KW_For for>
                  iter_names: [FILE]
                  iterable: (for_iter.Words words:[{($ Id.VSub_At '@')}])
                  semi_tok: <Id.Op_Semi _>
                  body: 
                    (command.DoGroup
                      left: <Id.KW_Do do>
                      children: [
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {($ Id.VSub_DollarName FILE)}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: [(EnvPair left:<Id.Lit_VarLike 'LC_ALL='> name:LC_ALL val:{<C>})]
                  words: [{<sort>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <uniq>
                  more_env: []
                  words: [{<uniq>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'MAKEFILE='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'MAKEFILE='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MAKEFILE='> name:MAKEFILE)
          op: assign_op.Equal
          rhs: {<'src/Makefile.am'>}
        )
      ]
      redirects: []
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <Id.Lit_LBracket '['>
          more_env: []
          words: [
            {<Id.Lit_LBracket '['>}
            {<-f>}
            {(DQ ($ Id.VSub_DollarName MAKEFILE))}
            {<Id.Lit_RBracket ']'>}
          ]
          redirects: []
          do_fork: T
        )
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Cannot find: '> ($ Id.VSub_DollarName MAKEFILE))}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'GZHEADERS='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'GZHEADERS='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GZHEADERS='> name:GZHEADERS)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <get_variable_value>
                    more_env: []
                    words: [{<get_variable_value>} {($ Id.VSub_DollarName MAKEFILE)} {<GZHEADERS>}]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'HEADERS='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'HEADERS='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'HEADERS='> name:HEADERS)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <get_variable_value>
                    more_env: []
                    words: [
                      {<get_variable_value>}
                      {($ Id.VSub_DollarName MAKEFILE)}
                      {<nobase_include_HEADERS>}
                    ]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'PUBLIC_HEADERS='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'PUBLIC_HEADERS='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PUBLIC_HEADERS='> name:PUBLIC_HEADERS)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <sort_files>
                    more_env: []
                    words: [
                      {<sort_files>}
                      {($ Id.VSub_DollarName GZHEADERS)}
                      {($ Id.VSub_DollarName HEADERS)}
                    ]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'LIBPROTOBUF_LITE_SOURCES='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'LIBPROTOBUF_LITE_SOURCES='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'LIBPROTOBUF_LITE_SOURCES='>
              name: LIBPROTOBUF_LITE_SOURCES
            )
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <get_source_files>
                    more_env: []
                    words: [
                      {<get_source_files>}
                      {($ Id.VSub_DollarName MAKEFILE)}
                      {<libprotobuf_lite_la_SOURCES>}
                    ]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'LIBPROTOBUF_SOURCES='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'LIBPROTOBUF_SOURCES='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'LIBPROTOBUF_SOURCES='>
              name: LIBPROTOBUF_SOURCES
            )
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <get_source_files>
                    more_env: []
                    words: [
                      {<get_source_files>}
                      {($ Id.VSub_DollarName MAKEFILE)}
                      {<libprotobuf_la_SOURCES>}
                    ]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'LIBPROTOC_SOURCES='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'LIBPROTOC_SOURCES='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LIBPROTOC_SOURCES='> name:LIBPROTOC_SOURCES)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <get_source_files>
                    more_env: []
                    words: [
                      {<get_source_files>}
                      {($ Id.VSub_DollarName MAKEFILE)}
                      {<libprotoc_la_SOURCES>}
                    ]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'LITE_PROTOS='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'LITE_PROTOS='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LITE_PROTOS='> name:LITE_PROTOS)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <get_proto_files>
                    more_env: []
                    words: [
                      {<get_proto_files>}
                      {($ Id.VSub_DollarName MAKEFILE)}
                      {<protoc_lite_outputs>}
                    ]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'PROTOS='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'PROTOS='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROTOS='> name:PROTOS)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <get_proto_files>
                    more_env: []
                    words: [{<get_proto_files>} {($ Id.VSub_DollarName MAKEFILE)} {<protoc_outputs>}]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'PROTOS_BLACKLISTED='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'PROTOS_BLACKLISTED='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROTOS_BLACKLISTED='> name:PROTOS_BLACKLISTED)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <get_proto_files_blacklisted>
                    more_env: []
                    words: [
                      {<get_proto_files_blacklisted>}
                      {($ Id.VSub_DollarName MAKEFILE)}
                      {<protoc_outputs>}
                    ]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'WKT_PROTOS='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'WKT_PROTOS='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WKT_PROTOS='> name:WKT_PROTOS)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <get_variable_value>
                    more_env: []
                    words: [
                      {<get_variable_value>}
                      {($ Id.VSub_DollarName MAKEFILE)}
                      {<nobase_dist_proto_DATA>}
                    ]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'COMMON_TEST_SOURCES='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'COMMON_TEST_SOURCES='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'COMMON_TEST_SOURCES='>
              name: COMMON_TEST_SOURCES
            )
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <get_source_files>
                    more_env: []
                    words: [
                      {<get_source_files>}
                      {($ Id.VSub_DollarName MAKEFILE)}
                      {<COMMON_TEST_SOURCES>}
                    ]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'COMMON_LITE_TEST_SOURCES='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'COMMON_LITE_TEST_SOURCES='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'COMMON_LITE_TEST_SOURCES='>
              name: COMMON_LITE_TEST_SOURCES
            )
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <get_source_files>
                    more_env: []
                    words: [
                      {<get_source_files>}
                      {($ Id.VSub_DollarName MAKEFILE)}
                      {<COMMON_LITE_TEST_SOURCES>}
                    ]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'TEST_SOURCES='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'TEST_SOURCES='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEST_SOURCES='> name:TEST_SOURCES)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <get_source_files>
                    more_env: []
                    words: [
                      {<get_source_files>}
                      {($ Id.VSub_DollarName MAKEFILE)}
                      {<protobuf_test_SOURCES>}
                    ]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'LITE_TEST_SOURCES='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'LITE_TEST_SOURCES='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LITE_TEST_SOURCES='> name:LITE_TEST_SOURCES)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <get_source_files>
                    more_env: []
                    words: [
                      {<get_source_files>}
                      {($ Id.VSub_DollarName MAKEFILE)}
                      {<protobuf_lite_test_SOURCES>}
                    ]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'LITE_ARENA_TEST_SOURCES='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'LITE_ARENA_TEST_SOURCES='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'LITE_ARENA_TEST_SOURCES='>
              name: LITE_ARENA_TEST_SOURCES
            )
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <get_source_files>
                    more_env: []
                    words: [
                      {<get_source_files>}
                      {($ Id.VSub_DollarName MAKEFILE)}
                      {<protobuf_lite_arena_test_SOURCES>}
                    ]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'TEST_PLUGIN_SOURCES='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'TEST_PLUGIN_SOURCES='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'TEST_PLUGIN_SOURCES='>
              name: TEST_PLUGIN_SOURCES
            )
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <get_source_files>
                    more_env: []
                    words: [
                      {<get_source_files>}
                      {($ Id.VSub_DollarName MAKEFILE)}
                      {<test_plugin_SOURCES>}
                    ]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'CMAKE_DIR='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'CMAKE_DIR='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CMAKE_DIR='> name:CMAKE_DIR)
          op: assign_op.Equal
          rhs: {<cmake>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'EXTRACT_INCLUDES_BAT='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'EXTRACT_INCLUDES_BAT='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'EXTRACT_INCLUDES_BAT='>
              name: EXTRACT_INCLUDES_BAT
            )
          op: assign_op.Equal
          rhs: {<'cmake/extract_includes.bat.in'>}
        )
      ]
      redirects: []
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <Id.Lit_LBracket '['>
          more_env: []
          words: [
            {<Id.Lit_LBracket '['>}
            {<-d>}
            {(DQ ($ Id.VSub_DollarName CMAKE_DIR))}
            {<Id.Lit_RBracket ']'>}
          ]
          redirects: []
          do_fork: T
        )
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Cannot find: '> ($ Id.VSub_DollarName CMAKE_DIR))}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <Id.Lit_LBracket '['>
          more_env: []
          words: [
            {<Id.Lit_LBracket '['>}
            {<-f>}
            {(DQ ($ Id.VSub_DollarName EXTRACT_INCLUDES_BAT))}
            {<Id.Lit_RBracket ']'>}
          ]
          redirects: []
          do_fork: T
        )
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Cannot find: '> ($ Id.VSub_DollarName EXTRACT_INCLUDES_BAT))}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.ShFunction
      name_tok: <set_cmake_value>
      name: set_cmake_value
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'FILENAME='> ($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'VARNAME='> ($ Id.VSub_Number 2)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'PREFIX='> ($ Id.VSub_Number 3)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <awk>
              more_env: []
              words: [
                {<awk>}
                {<-v>}
                {<Id.Lit_VarLike 'values='> (DQ ($ Id.VSub_Star '*'))}
                {<-v>}
                {<Id.Lit_VarLike 'prefix='> (DQ ($ Id.VSub_DollarName PREFIX))}
                {
                  (DQ <'\n'> <'    BEGIN { start = 0; }\n'> <'    /^set'> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\\\'>
                      ch: '\\'
                    ) <'('> ($ Id.VSub_DollarName VARNAME) <'/ {\n'> <'      start = 1;\n'> <'      print '> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\$'>
                      ch: '$'
                    ) <'0;\n'> <'      len = split(values, vlist, '> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\"'>
                      ch: '"'
                    ) <' '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <');\n'> 
                    <'      for (i = 1; i <= len; ++i) {\n'> <'        printf('> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'  %s%s'> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\\\'>
                      ch: '\\'
                    ) <n> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <', prefix, vlist[i]);\n'> 
                    <'      }\n'> <'      next;\n'> <'    }\n'> <'    start && /^'> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\\\'>
                      ch: '\\'
                    ) <')/ {\n'> <'      start = 0;\n'> <'    }\n'> <'    !start {\n'> <'      print '> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\$'>
                      ch: '$'
                    ) <'0;\n'> <'    }\n'> <'  '>
                  )
                }
                {($ Id.VSub_DollarName FILENAME)}
              ]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/tmp/'> ($ Id.VSub_Dollar '$')}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <cp>
              more_env: []
              words: [{<cp>} {<'/tmp/'> ($ Id.VSub_Dollar '$')} {($ Id.VSub_DollarName FILENAME)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'CMAKE_PREFIX='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'CMAKE_PREFIX='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CMAKE_PREFIX='> name:CMAKE_PREFIX)
          op: assign_op.Equal
          rhs: 
            {
              (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
                <'{protobuf_source_dir}/src/'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <set_cmake_value>
      more_env: []
      words: [
        {<set_cmake_value>}
        {($ Id.VSub_DollarName CMAKE_DIR) <'/libprotobuf-lite.cmake'>}
        {<libprotobuf_lite_files>}
        {($ Id.VSub_DollarName CMAKE_PREFIX)}
        {($ Id.VSub_DollarName LIBPROTOBUF_LITE_SOURCES)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <set_cmake_value>
      more_env: []
      words: [
        {<set_cmake_value>}
        {($ Id.VSub_DollarName CMAKE_DIR) <'/libprotobuf.cmake'>}
        {<libprotobuf_files>}
        {($ Id.VSub_DollarName CMAKE_PREFIX)}
        {($ Id.VSub_DollarName LIBPROTOBUF_SOURCES)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <set_cmake_value>
      more_env: []
      words: [
        {<set_cmake_value>}
        {($ Id.VSub_DollarName CMAKE_DIR) <'/libprotoc.cmake'>}
        {<libprotoc_files>}
        {($ Id.VSub_DollarName CMAKE_PREFIX)}
        {($ Id.VSub_DollarName LIBPROTOC_SOURCES)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <set_cmake_value>
      more_env: []
      words: [
        {<set_cmake_value>}
        {($ Id.VSub_DollarName CMAKE_DIR) <'/tests.cmake'>}
        {<lite_test_protos>}
        {(DQ )}
        {($ Id.VSub_DollarName LITE_PROTOS)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <set_cmake_value>
      more_env: []
      words: [
        {<set_cmake_value>}
        {($ Id.VSub_DollarName CMAKE_DIR) <'/tests.cmake'>}
        {<tests_protos>}
        {(DQ )}
        {($ Id.VSub_DollarName PROTOS_BLACKLISTED)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <set_cmake_value>
      more_env: []
      words: [
        {<set_cmake_value>}
        {($ Id.VSub_DollarName CMAKE_DIR) <'/tests.cmake'>}
        {<common_test_files>}
        {($ Id.VSub_DollarName CMAKE_PREFIX)}
        {($ Id.VSub_DollarName COMMON_TEST_SOURCES)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <set_cmake_value>
      more_env: []
      words: [
        {<set_cmake_value>}
        {($ Id.VSub_DollarName CMAKE_DIR) <'/tests.cmake'>}
        {<common_lite_test_files>}
        {($ Id.VSub_DollarName CMAKE_PREFIX)}
        {($ Id.VSub_DollarName COMMON_LITE_TEST_SOURCES)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <set_cmake_value>
      more_env: []
      words: [
        {<set_cmake_value>}
        {($ Id.VSub_DollarName CMAKE_DIR) <'/tests.cmake'>}
        {<tests_files>}
        {($ Id.VSub_DollarName CMAKE_PREFIX)}
        {($ Id.VSub_DollarName TEST_SOURCES)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <set_cmake_value>
      more_env: []
      words: [
        {<set_cmake_value>}
        {($ Id.VSub_DollarName CMAKE_DIR) <'/tests.cmake'>}
        {<lite_test_files>}
        {($ Id.VSub_DollarName CMAKE_PREFIX)}
        {($ Id.VSub_DollarName LITE_TEST_SOURCES)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <set_cmake_value>
      more_env: []
      words: [
        {<set_cmake_value>}
        {($ Id.VSub_DollarName CMAKE_DIR) <'/tests.cmake'>}
        {<lite_arena_test_files>}
        {($ Id.VSub_DollarName CMAKE_PREFIX)}
        {($ Id.VSub_DollarName LITE_ARENA_TEST_SOURCES)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'mkdir include'>)}]
      redirects: [
        (Redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName EXTRACT_INCLUDES_BAT)}
        )
      ]
      do_fork: T
    )
    (command.Pipeline
      children: [
        (command.ForEach
          keyword: <Id.KW_For for>
          iter_names: [HEADER]
          iterable: (for_iter.Words words:[{($ Id.VSub_DollarName PUBLIC_HEADERS)}])
          semi_tok: <Id.Op_Semi _>
          body: 
            (command.DoGroup
              left: <Id.KW_Do do>
              children: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'HEADER_DIR='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'HEADER_DIR='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'HEADER_DIR='> name:HEADER_DIR)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <dirname>
                                more_env: []
                                words: [{<dirname>} {($ Id.VSub_DollarName HEADER)}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<Id.KW_Bang '!'>}
                                {(DQ ($ Id.VSub_DollarName HEADER_DIR))}
                                {<Id.Lit_Equals '='>}
                                {(DQ <.>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      left: <Id.KW_Do do>
                      children: [
                        (command.Pipeline
                          children: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {($ Id.VSub_DollarName HEADER_DIR)}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <sed>
                              more_env: []
                              words: [
                                {<sed>}
                                {
                                  (DQ <'s/'> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\\\'>
                                      ch: '\\'
                                    ) <'//'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\\\'>
                                      ch: '\\'
                                    ) <'/g'>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_Pipe _>]
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'HEADER_DIR='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'HEADER_DIR='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'HEADER_DIR='>
                                  name: HEADER_DIR
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <dirname>
                                        more_env: []
                                        words: [{<dirname>} {($ Id.VSub_DollarName HEADER_DIR)}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
              ]
              right: <Id.KW_Done done>
            )
          redirects: []
        )
        (command.Simple blame_tok:<sort> more_env:[] words:[{<sort>}] redirects:[] do_fork:T)
        (command.Simple blame_tok:<uniq> more_env:[] words:[{<uniq>}] redirects:[] do_fork:T)
        (command.Simple
          blame_tok: <sed>
          more_env: []
          words: [
            {<sed>}
            {
              (DQ <'s/^/mkdir include'> 
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'/'>
              )
            }
          ]
          redirects: [
            (Redir
              op: <Id.Redir_DGreat '>>'>
              loc: (redir_loc.Fd fd:1)
              arg: {($ Id.VSub_DollarName EXTRACT_INCLUDES_BAT)}
            )
          ]
          do_fork: T
        )
      ]
      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
    )
    (command.ForEach
      keyword: <Id.KW_For for>
      iter_names: [HEADER]
      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName PUBLIC_HEADERS)}])
      semi_tok: <Id.Op_Semi _>
      body: 
        (command.DoGroup
          left: <Id.KW_Do do>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'WINPATH='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'WINPATH='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WINPATH='> name:WINPATH)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <echo>
                                more_env: []
                                words: [{<echo>} {($ Id.VSub_DollarName HEADER)}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <sed>
                                more_env: []
                                words: [{<sed>} {(SQ <'s;/;\\\\;g'>)}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _>]
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ <'copy '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
                    <'{PROTOBUF_SOURCE_WIN32_PATH}'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <..> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\\\'>
                      ch: '\\'
                    ) <src> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') 
                    ($ Id.VSub_DollarName WINPATH) <' include'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') 
                    ($ Id.VSub_DollarName WINPATH)
                  )
                }
              ]
              redirects: [
                (Redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName EXTRACT_INCLUDES_BAT)}
                )
              ]
              do_fork: T
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: []
    )
    (command.ShFunction
      name_tok: <set_bazel_value>
      name: set_bazel_value
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'FILENAME='> ($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'VARNAME='> ($ Id.VSub_Number 2)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'PREFIX='> ($ Id.VSub_Number 3)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <awk>
              more_env: []
              words: [
                {<awk>}
                {<-v>}
                {<Id.Lit_VarLike 'values='> (DQ ($ Id.VSub_Star '*'))}
                {<-v>}
                {<Id.Lit_VarLike 'prefix='> (DQ ($ Id.VSub_DollarName PREFIX))}
                {
                  (DQ <'\n'> <'    BEGIN { start = 0; }\n'> <'    /# AUTOGEN'> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\\\'>
                      ch: '\\'
                    ) <'('> ($ Id.VSub_DollarName VARNAME) 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\\\'>
                      ch: '\\'
                    ) <')/ {\n'> <'      start = 1;\n'> <'      print '> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\$'>
                      ch: '$'
                    ) <'0;\n'> <'      # replace '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
                    <'0 with indent.\n'> <'      sub(/#.*/, '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\"'>
                      ch: '"'
                    ) <', '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'0)\n'> 
                    <'      len = split(values, vlist, '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' '> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\"'>
                      ch: '"'
                    ) <');\n'> <'      for (i = 1; i <= len; ++i) {\n'> <'        printf('> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\"'>
                      ch: '"'
                    ) <'%s'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\"'>
                      ch: '"'
                    ) <'%s%s'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\"'>
                      ch: '"'
                    ) <','> <Id.Lit_BadBackslash '\\'> <n> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                    <', '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'0, prefix, vlist[i]);\n'> 
                    <'      }\n'> <'      next;\n'> <'    }\n'> <'    start && /'> <Id.Lit_BadBackslash '\\'> <']/ {\n'> 
                    <'      start = 0\n'> <'    }\n'> <'    !start {\n'> <'      print '> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\$'>
                      ch: '$'
                    ) <'0;\n'> <'    }\n'> <'  '>
                  )
                }
                {($ Id.VSub_DollarName FILENAME)}
              ]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/tmp/'> ($ Id.VSub_Dollar '$')}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <cp>
              more_env: []
              words: [{<cp>} {<'/tmp/'> ($ Id.VSub_Dollar '$')} {($ Id.VSub_DollarName FILENAME)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'BAZEL_BUILD='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'BAZEL_BUILD='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BAZEL_BUILD='> name:BAZEL_BUILD)
          op: assign_op.Equal
          rhs: {<'./BUILD'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'BAZEL_PREFIX='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'BAZEL_PREFIX='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BAZEL_PREFIX='> name:BAZEL_PREFIX)
          op: assign_op.Equal
          rhs: {(DQ <'src/'>)}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {<-f>}
                        {(DQ ($ Id.VSub_DollarName BAZEL_BUILD))}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <set_bazel_value>
              more_env: []
              words: [
                {<set_bazel_value>}
                {($ Id.VSub_DollarName BAZEL_BUILD)}
                {<protobuf_lite_srcs>}
                {($ Id.VSub_DollarName BAZEL_PREFIX)}
                {($ Id.VSub_DollarName LIBPROTOBUF_LITE_SOURCES)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <set_bazel_value>
              more_env: []
              words: [
                {<set_bazel_value>}
                {($ Id.VSub_DollarName BAZEL_BUILD)}
                {<protobuf_srcs>}
                {($ Id.VSub_DollarName BAZEL_PREFIX)}
                {($ Id.VSub_DollarName LIBPROTOBUF_SOURCES)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <set_bazel_value>
              more_env: []
              words: [
                {<set_bazel_value>}
                {($ Id.VSub_DollarName BAZEL_BUILD)}
                {<protoc_lib_srcs>}
                {($ Id.VSub_DollarName BAZEL_PREFIX)}
                {($ Id.VSub_DollarName LIBPROTOC_SOURCES)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <set_bazel_value>
              more_env: []
              words: [
                {<set_bazel_value>}
                {($ Id.VSub_DollarName BAZEL_BUILD)}
                {<lite_test_protos>}
                {(DQ )}
                {($ Id.VSub_DollarName LITE_PROTOS)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <set_bazel_value>
              more_env: []
              words: [
                {<set_bazel_value>}
                {($ Id.VSub_DollarName BAZEL_BUILD)}
                {<well_known_protos>}
                {(DQ )}
                {($ Id.VSub_DollarName WKT_PROTOS)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <set_bazel_value>
              more_env: []
              words: [
                {<set_bazel_value>}
                {($ Id.VSub_DollarName BAZEL_BUILD)}
                {<test_protos>}
                {(DQ )}
                {($ Id.VSub_DollarName PROTOS)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <set_bazel_value>
              more_env: []
              words: [
                {<set_bazel_value>}
                {($ Id.VSub_DollarName BAZEL_BUILD)}
                {<common_test_srcs>}
                {($ Id.VSub_DollarName BAZEL_PREFIX)}
                {($ Id.VSub_DollarName COMMON_TEST_SOURCES)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <set_bazel_value>
              more_env: []
              words: [
                {<set_bazel_value>}
                {($ Id.VSub_DollarName BAZEL_BUILD)}
                {<test_srcs>}
                {($ Id.VSub_DollarName BAZEL_PREFIX)}
                {($ Id.VSub_DollarName TEST_SOURCES)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <set_bazel_value>
              more_env: []
              words: [
                {<set_bazel_value>}
                {($ Id.VSub_DollarName BAZEL_BUILD)}
                {<test_plugin_srcs>}
                {($ Id.VSub_DollarName BAZEL_PREFIX)}
                {($ Id.VSub_DollarName TEST_PLUGIN_SOURCES)}
              ]
              redirects: []
              do_fork: T
            )
          ]
          spids: [1050 1063]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [{<echo>} {(DQ <'Skipped BUILD file update.'>)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
  ]
)