(command.CommandList
  children: [
    (command.ShFunction
      name: p
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: 
                (C {<echo>} 
                  {
                    (braced_var_sub
                      token: <Id.VSub_Name BASH_SOURCE>
                      bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>})
                      suffix_op: 
                        (suffix_op.Unary
                          tok: <Id.VOp1_DPound '##'>
                          arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>}
                        )
                    ) <Id.Lit_Colon ':'> 
                    (braced_var_sub
                      token: <Id.VSub_Name BASH_LINENO>
                      bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>})
                    )
                  }
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence child:(C {<echo>} {(SQ <'==='>)}) terminator:<Id.Op_Semi _>)
          ]
        )
    )
    (C {<p>})
    (command.CommandList
      children: [
        (command.Sentence child:(C {<p>}) terminator:<Id.Op_Semi _>)
        (command.ShAssignment
          pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:x) op:assign_op.Equal rhs:{<6>} spids:[49])]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence child:(C {<p>}) terminator:<Id.Op_Semi _>)
        (command.ShAssignment
          pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:x) op:assign_op.Equal rhs:{<7>} spids:[56])]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence child:(C {<p>}) terminator:<Id.Op_Semi _>)
        (command.ShAssignment
          pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:x) op:assign_op.Equal rhs:{<8>} spids:[63])]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence child:(C {<p>}) terminator:<Id.Op_Semi _>)
        (command.ShAssignment
          pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:x) op:assign_op.Equal rhs:{<9>} spids:[70])]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence child:(C {<p>}) terminator:<Id.Op_Semi _>)
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:x)
              op: assign_op.Equal
              rhs: {<10>}
              spids: [77]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence child:(C {<p>}) terminator:<Id.Op_Semi _>)
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:x)
              op: assign_op.Equal
              rhs: {<11>}
              spids: [84]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence child:(C {<p>}) terminator:<Id.Op_Semi _>)
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:x)
              op: assign_op.Equal
              rhs: {<12>}
              spids: [91]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence child:(C {<p>}) terminator:<Id.Op_Semi _>)
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:x)
              op: assign_op.Equal
              rhs: {<13>}
              spids: [98]
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:x) op:assign_op.Equal rhs:{<14>} spids:[101])]
    )
  ]
)