(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:gindent)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [11]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:indent)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [13]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:paths)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<echo>} {($ Id.VSub_DollarName '$PATH')})
                      (C {<sed>} {<-e>} {(SQ <'s/::/:.:/g'>)} {<-e>} {(SQ <'s/^:/.:/'>)} {<-e>} 
                        {(SQ <'s/:$/:./'>)} {<-e>} {(SQ <'s/:/ /g'>)}
                      )
                    ]
                    negated: F
                  )
              )
            }
          spids: [15]
        )
      ]
    )
    (command.ForEach
      iter_name: path
      iter_words: [{($ Id.VSub_DollarName '$paths')}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<test>} {<Id.KW_Bang '!'>} {<-n>} {(DQ (${ Id.VSub_Name gindent))} {<-a>} 
                          {<-x>} {(${ Id.VSub_Name path) <'/gindent'>}
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:gindent)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name path) <'/gindent'>}
                          spids: [110]
                        )
                      ]
                    )
                    (command.ControlFlow token:<Id.ControlFlow_Break break>)
                  ]
                  spids: [83 107]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<test>} {<Id.KW_Bang '!'>} {<-n>} {(DQ (${ Id.VSub_Name indent))} {<-a>} {<-x>} 
                          {(${ Id.VSub_Name path) <'/indent'>}
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:indent)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name path) <'/indent'>}
                          spids: [147]
                        )
                      ]
                    )
                  ]
                  spids: [120 144]
                )
              ]
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: (condition.Shell commands:[(C {<test>} {<-n>} {(DQ (${ Id.VSub_Name gindent))})])
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:indent)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name gindent)}
                  spids: [174]
                )
              ]
            )
          ]
          spids: [159 171]
        )
        (if_arm
          cond: (condition.Shell commands:[(C {<test>} {<-n>} {(DQ (${ Id.VSub_Name indent))})])
          action: [(C {<Id.Lit_Colon ':'>})]
          spids: [179 191]
        )
      ]
      else_action: [
        (command.Simple
          words: [{<echo>} {(DQ <'Indent not found'>)}]
          redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
          do_fork: T
        )
      ]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:m1) op:assign_op.Equal rhs:{<2>} spids:[219])]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:m2) op:assign_op.Equal rhs:{<2>} spids:[222])]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:m3) op:assign_op.Equal rhs:{<9>} spids:[225])]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:version)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Simple
                    words: [{(${ Id.VSub_Name indent)} {<--version>}]
                    redirects: [
                      (redir
                        op: <Id.Redir_Great '2>'>
                        loc: (redir_loc.Fd fd:2)
                        arg: {<'/dev/null'>}
                      )
                      (redir
                        op: <Id.Redir_Less '<'>
                        loc: (redir_loc.Fd fd:0)
                        arg: {<'/dev/null'>}
                      )
                    ]
                    do_fork: T
                  )
              )
            }
          spids: [229]
        )
      ]
    )
    (command.Case
      to_match: {(DQ (${ Id.VSub_Name version))}
      arms: [
        (case_arm
          pat_list: [{<Id.Lit_Star '*'> <GNU> <Id.Lit_Star '*'>}]
          spids: [258 262 264 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.Sentence
              child: 
                (command.Simple
                  words: [
                    {<echo>}
                    {
                      (DQ <'error: GNU indent '> ($ Id.VSub_DollarName '$m1') <.> 
                        ($ Id.VSub_DollarName '$m2') <.> ($ Id.VSub_DollarName '$m3') <' expected'>
                      )
                    }
                  ]
                  redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
              terminator: <Id.Op_Semi _>
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [267 269 291 -1]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:v1)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<echo>} {(DQ (${ Id.VSub_Name version))})
                      (C {<sed>} {(SQ <'s/^.* \\([0-9]*\\)\\.\\([0-9]*\\)\\.\\([0-9]*\\)$/\\1/'>)})
                    ]
                    negated: F
                  )
              )
            }
          spids: [295]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:v2)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<echo>} {(DQ (${ Id.VSub_Name version))})
                      (C {<sed>} {(SQ <'s/^.* \\([0-9]*\\)\\.\\([0-9]*\\)\\.\\([0-9]*\\)$/\\2/'>)})
                    ]
                    negated: F
                  )
              )
            }
          spids: [334]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:v3)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<echo>} {(DQ (${ Id.VSub_Name version))})
                      (C {<sed>} {(SQ <'s/^.* \\([0-9]*\\)\\.\\([0-9]*\\)\\.\\([0-9]*\\)$/\\3/'>)})
                    ]
                    negated: F
                  )
              )
            }
          spids: [373]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<test>} {($ Id.VSub_DollarName '$m1')} {<-ne>} {($ Id.VSub_DollarName '$v1')} {<-o>} 
                  {($ Id.VSub_DollarName '$m2')} {<-ne>} {($ Id.VSub_DollarName '$v2')} {<-o>} {($ Id.VSub_DollarName '$m3')} {<-gt>} 
                  {($ Id.VSub_DollarName '$v3')}
                )
              ]
            )
          action: [
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'error: Must be GNU indent version '> ($ Id.VSub_DollarName '$m1') <.> 
                    ($ Id.VSub_DollarName '$m2') <.> ($ Id.VSub_DollarName '$m3') <' or later'>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [413 439]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<test>} {($ Id.VSub_DollarName '$m3')} {<-ne>} {($ Id.VSub_DollarName '$v3')})
              ]
            )
          action: [
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'warning: GNU indent version '> ($ Id.VSub_DollarName '$m1') <.> 
                    ($ Id.VSub_DollarName '$m2') <.> ($ Id.VSub_DollarName '$m3') <' recommended'>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
          spids: [465 475]
        )
      ]
    )
    (command.Case
      to_match: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<pwd>}))}
      arms: [
        (case_arm pat_list:[{<Id.Lit_Star '*'> <'/gdb'>}] spids:[511 514 516 -1])
        (case_arm
          pat_list: [{<Id.Lit_Star '*'> <'/sim/'> <Id.Lit_Star '*'>}]
          spids: [519 523 525 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.Sentence
              child: 
                (command.Simple
                  words: [{<echo>} {(DQ <'Not in GDB directory'>)}]
                  redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
              terminator: <Id.Op_Semi _>
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [528 530 547 -1]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:types)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'-T FILE '> <'-T bfd -T asection -T pid_t '> 
                <'-T prgregset_t -T fpregset_t -T gregset_t -T sigset_t '> <'-T td_thrhandle_t -T td_event_msg_t -T td_thr_events_t '> 
                <'-T td_notify_t -T td_thr_iter_f -T td_thrinfo_t '> 
                (command_sub
                  left_token: <Id.Left_Backtick '`'>
                  child: 
                    (command.Pipeline
                      children: [
                        (C {<cat>} {<Id.Lit_Star '*'> <.h>})
                        (C {<sed>} {<-n>} {<-e>} 
                          {(SQ <'s/^.*[^a-z0-9_]\\([a-z0-9_]*_ftype\\).*$/-T \\1/p'>)} {<-e>} {(SQ <'s/^.*[^a-z0-9_]\\([a-z0-9_]*_func\\).*$/-T \\1/p'>)} {<-e>} 
                          {
                            (SQ 
                              <
's/^typedef.*[^a-zA-Z0-9_]\\([a-zA-Z0-9_]*[a-zA-Z0-9_]\\);$/-T \\1/p'
                              >
                            )
                          }
                        )
                        (C {<sort>} {<-u>})
                      ]
                      negated: F
                    )
                )
              )
            }
          spids: [557]
        )
      ]
    )
    (C {(${ Id.VSub_Name indent)} {(${ Id.VSub_Name types)} {(DQ ($ Id.VSub_At '$@'))})
  ]
)