(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:srctree)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: (C {<dirname>} {(DQ ($ Id.VSub_Number '$0'))})
              )
            }
          spids: [3]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SHOW_ERROR)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [13]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_Equals '='>} 
                  {(DQ <--show-error>)} {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:SHOW_ERROR)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [36]
                )
              ]
            )
            (command.AndOr ops:[Id.Op_DPipe] children:[(C {<shift>}) (C {<true>})])
          ]
          spids: [15 33]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:gccplugins_dir)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: (C {($ Id.VSub_Number '$3')} {<-print-file-name> <Id.Lit_Equals '='> <plugin>})
              )
            }
          spids: [49]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:plugincc)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    words: [
                      {($ Id.VSub_Number '$1')}
                      {<-E>}
                      {<-x>}
                      {<c> <Id.Lit_Other '+'> <Id.Lit_Other '+'>}
                      {<->}
                      {<-o>}
                      {<'/dev/null'>}
                      {<-I> (DQ (${ Id.VSub_Name srctree)) <'/gcc-plugins'>}
                      {<-I> (DQ (${ Id.VSub_Name gccplugins_dir)) <'/include'>}
                    ]
                    redirects: [
                      (redir
                        op: <Id.Redir_GreatAnd '2>&'>
                        loc: (redir_loc.Fd fd:2)
                        arg: {<1>}
                      )
                      (redir
                        op: <Id.Redir_DLess '<<'>
                        loc: (redir_loc.Fd fd:0)
                        arg: 
                          (redir_param.MultiLine
                            here_begin: {<EOF>}
                            here_end_span_id: 113
                            stdin_parts: [
                              <'#include '>
                              <Id.Right_DoubleQuote '"'>
                              <gcc-common.h>
                              <Id.Right_DoubleQuote '"'>
                              <'\n'>
                              <
'#if BUILDING_GCC_VERSION >= 4008 || defined(ENABLE_BUILD_WITH_CXX)\n'
                              >
                              <'#warning '>
                              ($ Id.VSub_Number '$2')
                              <' CXX\n'>
                              <'#else\n'>
                              <'#warning '>
                              ($ Id.VSub_Number '$1')
                              <' CC\n'>
                              <'#endif\n'>
                            ]
                          )
                      )
                    ]
                    do_fork: T
                  )
              )
            }
          spids: [58]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>})
          ]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName '$SHOW_ERROR'))} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ (${ Id.VSub_Name plugincc))}]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                  ]
                  spids: [132 146]
                )
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [117 129]
        )
      ]
    )
    (command.Case
      to_match: {(DQ ($ Id.VSub_DollarName '$plugincc'))}
      arms: [
        (case_arm
          pat_list: [{<Id.Lit_Star '*'> (DQ ($ Id.VSub_Number '$1') <' CC'>) <Id.Lit_Star '*'>}]
          action: [
            (C {<echo>} {(DQ ($ Id.VSub_Number '$1'))})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
          ]
          spids: [180 186 201 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'> (DQ ($ Id.VSub_Number '$2') <' CXX'>) <Id.Lit_Star '*'>}]
          spids: [205 211 218 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})]
          spids: [222 223 231 -1]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:plugincc)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    words: [
                      {($ Id.VSub_Number '$2')}
                      {<-c>}
                      {<-x>}
                      {<c> <Id.Lit_Other '+'> <Id.Lit_Other '+'>}
                      {<-std> <Id.Lit_Equals '='> <gnu> <Id.Lit_Other '+'> <Id.Lit_Other '+'> <98>}
                      {<->}
                      {<-fsyntax-only>}
                      {<-I> (DQ (${ Id.VSub_Name srctree)) <'/gcc-plugins'>}
                      {<-I> (DQ (${ Id.VSub_Name gccplugins_dir)) <'/include'>}
                    ]
                    redirects: [
                      (redir
                        op: <Id.Redir_GreatAnd '2>&'>
                        loc: (redir_loc.Fd fd:2)
                        arg: {<1>}
                      )
                      (redir
                        op: <Id.Redir_DLess '<<'>
                        loc: (redir_loc.Fd fd:0)
                        arg: 
                          (redir_param.MultiLine
                            here_begin: {<EOF>}
                            here_end_span_id: 296
                            stdin_parts: [
                              <'#include '>
                              <Id.Right_DoubleQuote '"'>
                              <gcc-common.h>
                              <Id.Right_DoubleQuote '"'>
                              <'\n'>
                              <'class test {\n'>
                              <'public:\n'>
                              <'\tint test;\n'>
                              <'} test = {\n'>
                              <'\t.test = 1\n'>
                              <'};\n'>
                            ]
                          )
                      )
                    ]
                    do_fork: T
                  )
              )
            }
          spids: [239]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>})
          ]
          action: [
            (C {<echo>} {(DQ ($ Id.VSub_Number '$2'))})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
          ]
          spids: [300 312]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName '$SHOW_ERROR'))} 
                  {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.Simple
              words: [{<echo>} {(DQ (${ Id.VSub_Name plugincc))}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
          spids: [329 343]
        )
      ]
    )
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
  ]
)