(command.CommandList
  children: [
    (C {<set>} {<-x>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ROOT='> name:ROOT)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.CommandList
                    children: [
                      (command.Sentence
                        child: 
                          (C {<cd>} 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: (C {<dirname>} {($ Id.VSub_DollarName BASH_SOURCE)})
                                right: <Id.Eof_RParen _>
                              ) <'/../../..'>
                            }
                          )
                        terminator: <Id.Op_Semi _>
                      )
                      (C {<pwd>})
                    ]
                  )
                right: <Id.Eof_RParen _>
              )
            }
          spids: [62]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IWYU_LOG='> name:IWYU_LOG)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: (C {<mktemp>} {<-t>} {<arrow-cpp-iwyu.XXXXXX>})
                right: <Id.Eof_RParen _>
              )
            }
          spids: [78]
        )
      ]
      redirects: []
    )
    (C {<trap>} {(DQ <'rm -f '> ($ Id.VSub_DollarName IWYU_LOG))} {<EXIT>})
    (C {<echo>} {(DQ <'Logging IWYU to '> ($ Id.VSub_DollarName IWYU_LOG))})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IWYU_MAPPINGS_PATH='> name:IWYU_MAPPINGS_PATH)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName ROOT) <'/cpp/build-support/iwyu/mappings'>)}
          spids: [105]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IWYU_ARGS='> name:IWYU_ARGS)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'    --mapping_file='> ($ Id.VSub_DollarName IWYU_MAPPINGS_PATH) <'/boost-all.imp '> 
                <'    --mapping_file='> ($ Id.VSub_DollarName IWYU_MAPPINGS_PATH) <'/boost-all-private.imp '> <'    --mapping_file='> 
                ($ Id.VSub_DollarName IWYU_MAPPINGS_PATH) <'/boost-extra.imp '> <'    --mapping_file='> ($ Id.VSub_DollarName IWYU_MAPPINGS_PATH) <'/gflags.imp '> 
                <'    --mapping_file='> ($ Id.VSub_DollarName IWYU_MAPPINGS_PATH) <'/glog.imp '> <'    --mapping_file='> 
                ($ Id.VSub_DollarName IWYU_MAPPINGS_PATH) <'/gtest.imp '> <'    --mapping_file='> ($ Id.VSub_DollarName IWYU_MAPPINGS_PATH) <'/arrow-misc.imp'>
              )
            }
          spids: [111]
        )
      ]
      redirects: []
    )
    (C {<set>} {<-e>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 1))} 
                      {<Id.Lit_Equals '='> <Id.Lit_Equals '='>} {(DQ <all>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Pipeline
              children: [
                (C {<python>} {($ Id.VSub_DollarName ROOT) <'/cpp/build-support/iwyu/iwyu_tool.py'>} 
                  {<-p>} {<.>} {<-->} {($ Id.VSub_DollarName IWYU_ARGS)}
                )
                (C {<awk>} {<-f>} 
                  {($ Id.VSub_DollarName ROOT) <'/cpp/build-support/iwyu/iwyu-filter.awk'>}
                )
                (C {<tee>} {($ Id.VSub_DollarName IWYU_LOG)})
              ]
              negated: F
              stderr_indices: []
            )
          ]
          spids: [149 167]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file_list_tmp='> name:file_list_tmp)
              op: assign_op.Equal
              rhs: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Pipeline
                        children: [
                          (C {<git>} {<diff>} {<--name-only>} 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (C 
                                    {($ Id.VSub_DollarName ROOT) 
                                      <'/cpp/build-support/get-upstream-commit.sh'>
                                    }
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                          )
                          (C {<grep>} {<-E>} {(SQ <'\\.(c|cc|h)$'>)})
                        ]
                        negated: F
                        stderr_indices: []
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              spids: [209]
            )
          ]
          redirects: []
        )
        (command.If
          arms: [
            (if_arm
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName file_list_tmp))} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              action: [
                (C {<echo>} {(DQ <'IWYU verification: no updates on related files, declaring success'>)})
                (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
              ]
              spids: [236 249]
            )
          ]
          else_action: []
          redirects: []
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IWYU_FILE_LIST='> name:IWYU_FILE_LIST)
              op: assign_op.Equal
              rhs: (rhs_word.Empty)
              spids: [276]
            )
          ]
          redirects: []
        )
        (command.ForEach
          iter_names: [p]
          iterable: (for_iter.Words words:[{($ Id.VSub_DollarName file_list_tmp)}])
          body: 
            (command.DoGroup
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'IWYU_FILE_LIST='>
                          name: IWYU_FILE_LIST
                        )
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ ($ Id.VSub_DollarName IWYU_FILE_LIST) <' '> ($ Id.VSub_DollarName ROOT) 
                            <'/'> ($ Id.VSub_DollarName p)
                          )
                        }
                      spids: [291]
                    )
                  ]
                  redirects: []
                )
              ]
            )
          redirects: []
        )
        (command.Pipeline
          children: [
            (C {<python>} {($ Id.VSub_DollarName ROOT) <'/cpp/build-support/iwyu/iwyu_tool.py'>} {<-p>} 
              {<.>} {($ Id.VSub_DollarName IWYU_FILE_LIST)} {<-->} {($ Id.VSub_DollarName IWYU_ARGS)}
            )
            (C {<awk>} {<-f>} {($ Id.VSub_DollarName ROOT) <'/cpp/build-support/iwyu/iwyu-filter.awk'>})
            (C {<tee>} {($ Id.VSub_DollarName IWYU_LOG)})
          ]
          negated: F
          stderr_indices: []
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-s>} {(DQ ($ Id.VSub_DollarName IWYU_LOG))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})]
          spids: [342 355]
        )
      ]
      else_action: []
      redirects: []
    )
    (C {<echo>} {(DQ <'IWYU verification: the changes look good'>)})
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
  ]
)