(command.ShFunction
  name: validAlphaNum
  body: 
    (BraceGroup
      children: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:validchars)
              op: assign_op.Equal
              rhs: 
                {
                  (DQ 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (command.Pipeline
                          children: [
                            (C {<echo>} {($ Id.VSub_Number '$1')})
                            (C {<sed>} {<-e>} {(SQ <'s/[^[:alnum:]]//g'>)})
                          ]
                          negated: F
                        )
                    )
                  )
                }
              spids: [25]
            )
          ]
        )
        (command.If
          arms: [
            (if_arm
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$validchars'))} 
                          {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})]
              spids: [46 64]
            )
          ]
          else_action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})]
        )
      ]
    )
)