(command.CommandList
  children: [
    (command.ShFunction
      name: in_path
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cmd)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [34]
                )
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ourpath)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$2')}
                  spids: [37]
                )
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:result)
                  op: assign_op.Equal
                  rhs: {(1)}
                  spids: [40]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:oldIFS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$IFS')}
                  spids: [44]
                )
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {(DQ (':'))}
                  spids: [47]
                )
              ]
            )
            (command.ForEach
              iter_name: directory
              iter_words: [{($ Id.VSub_DollarName '$ourpath')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Id.Lit_LBracket '[')} {(-x)} 
                                  {($ Id.VSub_DollarName '$directory') (/) 
                                    ($ Id.VSub_DollarName '$cmd')
                                  } {(Id.Lit_RBracket ']')}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:78)
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:result)
                                  op: assign_op.Equal
                                  rhs: {(0)}
                                  spids: [83]
                                )
                              ]
                            )
                          ]
                          spids: [66 80]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$oldIFS')}
                  spids: [97]
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Return val:return span_id:101)
              arg_word: {($ Id.VSub_DollarName '$result')}
            )
          ]
        )
    )
    (command.ShFunction
      name: checkForCmdInPath
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:var)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [118]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$var'))} 
                          {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ )} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:139)
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Id.Lit_LBracket '[')} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:var span_id:150)
                                        suffix_op: 
                                          (suffix_op.Slice
                                            begin: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)})
                                            length: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)})
                                          )
                                      )
                                    )
                                  } {(Id.Lit_Equals '=')} {(DQ (/))} {(Id.Lit_RBracket ']')}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:166)
                            )
                          ]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-x)} 
                                          {($ Id.VSub_DollarName '$var')} {(Id.Lit_RBracket ']')}
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:183)
                                    )
                                  ]
                                  action: [
                                    (command.ControlFlow
                                      token: (Token id:Id.ControlFlow_Return val:return span_id:188)
                                      arg_word: {(1)}
                                    )
                                  ]
                                  spids: [171 185]
                                )
                              ]
                            )
                          ]
                          spids: [144 168]
                        )
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.Pipeline
                                  children: [
                                    (C {(in_path)} {($ Id.VSub_DollarName '$var')} 
                                      {(DQ ($ Id.VSub_DollarName '$PATH'))}
                                    )
                                  ]
                                  negated: T
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:208)
                            )
                          ]
                          action: [
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Return val:return span_id:213)
                              arg_word: {(2)}
                            )
                          ]
                          spids: [196 210]
                        )
                      ]
                    )
                  ]
                  spids: [123 141]
                )
              ]
            )
          ]
        )
    )
  ]
)