(CommandList
  children: [
    (FuncDef
      name: getopts_long
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (C {(Lit_Other '[')} {(-n)} 
                  {
                    (DQ 
                      (BracedVarSub
                        token: <VSub_Name ZSH_VERSION>
                        suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(z)})
                        spids: [621 625]
                      )
                    )
                  } {(Lit_Other ']')}
                )
                (C {(emulate)} {(-L)} {(sh)})
              ]
              op_id: Op_DAmp
            )
            (AndOr
              children: [(C {(unset)} {(OPTLERR)} {(OPTLARG)}) (C {(Lit_Other ':')})]
              op_id: Op_DPipe
            )
            (Case
              to_match: {(DQ ($ VSub_Name '$OPTLIND'))}
              arms: [
                (case_arm
                  pat_list: [
                    {(DQ )}
                    {(0)}
                    {(Lit_Other '*') (Lit_Other '[') (KW_Bang '!') (0-9) (Lit_Other ']') (Lit_Other '*')}
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:OPTLIND) op:Equal rhs:{(1)} spids:[683])]
                      spids: [683]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:OPTLPENDING)
                          op: Equal
                          rhs: {(SQ )}
                          spids: [687]
                        )
                      ]
                      spids: [687]
                    )
                  ]
                  spids: [-1 676 690 -1]
                )
              ]
              spids: [652 658 693]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_Pound '$#'))} {(-lt)} {(2)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [{(printf)} {(SQ <'getopts_long: not enough arguments\\n'>)}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[717])]
                    )
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [-1 712]
                )
              ]
              spids: [-1 730]
            )
            (SimpleCommand
              words: [
                {(command)}
                {(eval)}
                {
                  (SQ <'\n'> <'    case "$2" in\n'> <'      *[!a-zA-Z_0-9]*|""|[0-9]*)\n'> 
                    <'\tprintf >&2 "getopts_long: invalid variable name: \\`%s'>
                  ) (EscapedLiteralPart token:<Lit_EscapedChar "\\'">) 
                  (SQ <'\\n" "$2"\n'> <'\treturn 1\n'> <'\t;;\n'> <'    esac'>)
                }
              ]
              more_env: [(env_pair name:LC_ALL val:{(C)} spids:[738])]
            )
            (Case
              to_match: {(DQ ($ VSub_Number '$1'))}
              arms: [
                (case_arm
                  pat_list: [
                    {(Lit_Other ':') (Lit_Other ':') (Lit_Other '*')}
                    {(Lit_Other '*') (Lit_Other ':') (Lit_Other ':') (Lit_Other ':') (Lit_Other '*')}
                    {(Lit_Other '*') (-) (Lit_Other '*')}
                  ]
                  action: [
                    (SimpleCommand
                      words: [
                        {(printf)}
                        {
                          (DQ ('getopts_long: invalid option specification: ') 
                            (EscapedLiteralPart
                              token: <Lit_EscapedChar '\\`'>
                            ) ("%s'") (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                          )
                        }
                        {(DQ ($ VSub_Number '$1'))}
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[792])]
                    )
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [774 787 812 -1]
                )
              ]
              spids: [765 771 815]
            )
            (C {(set)} {(4)} {(DQ ($ VSub_At '$@'))})
            (While
              cond: [(Sentence child:(C {(Lit_Other ':')}) terminator:<Op_Semi ';'>)]
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (AndOr
                              children: [
                                (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$1'))} {(-gt)} 
                                  {(DQ ($ VSub_Pound '$#'))} {(Lit_Other ']')}
                                )
                                (BraceGroup
                                  children: [
                                    (C {(eval)} 
                                      {(SQ <'set -- "${'>) (DQ ($ VSub_Number '$1')) (SQ <'}" "$@"'>)}
                                    )
                                    (AndOr
                                      children: [
                                        (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Number '$1'))} 
                                          {(Lit_Other ']')}
                                        )
                                        (ControlFlow
                                          token: <ControlFlow_Break break>
                                        )
                                      ]
                                      op_id: Op_DPipe
                                    )
                                    (C {(Lit_Other '[')} 
                                      {
                                        (DQ 
                                          (ArithSubPart
                                            anode: 
                                              (ArithBinary
                                                op_id: Arith_Plus
                                                left: (ArithWord w:{($ VSub_Number '$2')})
                                                right: (ArithWord w:{(Lit_Digits 2)})
                                              )
                                            spids: [903 910]
                                          )
                                        )
                                      } {(-gt)} {(DQ ($ VSub_Pound '$#'))} {(Lit_Other ']')}
                                    )
                                  ]
                                  spids: [869]
                                )
                              ]
                              op_id: Op_DPipe
                            )
                          ]
                          action: [
                            (SimpleCommand
                              words: [
                                {(printf)}
                                {
                                  (DQ 
                                    (
'getopts_long: long option specifications must end in an empty argument'
                                    ) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                                  )
                                }
                              ]
                              redirects: [
                                (Redir
                                  op_id: Redir_GreatAnd
                                  fd: -1
                                  arg_word: {(2)}
                                  spids: [930]
                                )
                              ]
                            )
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(1)}
                            )
                          ]
                          spids: [-1 925]
                        )
                      ]
                      spids: [-1 944]
                    )
                    (C {(eval)} 
                      {(SQ <'set -- "${'>) 
                        (DQ 
                          (ArithSubPart
                            anode: 
                              (ArithBinary
                                op_id: Arith_Plus
                                left: (ArithWord w:{($ VSub_Number '$2')})
                                right: (ArithWord w:{(Lit_Digits 2)})
                              )
                            spids: [953 960]
                          )
                        ) (SQ <'}" "$@"'>)
                      }
                    )
                    (Case
                      to_match: {(DQ ($ VSub_Number '$2'))}
                      arms: [
                        (case_arm
                          pat_list: [{(Lit_Other '*') (Lit_Other '=') (Lit_Other '*')}]
                          action: [
                            (SimpleCommand
                              words: [
                                {(printf)}
                                {
                                  (DQ ('getopts_long: invalid long option name: ') 
                                    (EscapedLiteralPart
                                      token: <Lit_EscapedChar '\\`'>
                                    ) ("%s'") (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                                  )
                                }
                                {(DQ ($ VSub_Number '$2'))}
                              ]
                              redirects: [
                                (Redir
                                  op_id: Redir_GreatAnd
                                  fd: -1
                                  arg_word: {(2)}
                                  spids: [988]
                                )
                              ]
                            )
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(1)}
                            )
                          ]
                          spids: [980 983 1008 -1]
                        )
                      ]
                      spids: [971 977 1011]
                    )
                    (Case
                      to_match: {(DQ ($ VSub_Number '$1'))}
                      arms: [
                        (case_arm
                          pat_list: [{(0)} {(no_argument)}]
                          spids: [1023 1028 1030 -1]
                        )
                        (case_arm
                          pat_list: [{(1)} {(required_argument)}]
                          spids: [1033 1038 1040 -1]
                        )
                        (case_arm
                          pat_list: [{(2)} {(optional_argument)}]
                          spids: [1043 1048 1050 -1]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [
                            (SimpleCommand
                              words: [
                                {(printf)}
                                {
                                  (DQ ('getopts_long: invalid long option type: ') 
                                    (EscapedLiteralPart
                                      token: <Lit_EscapedChar '\\`'>
                                    ) ("%s'") (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)
                                  )
                                }
                                {(DQ ($ VSub_Number '$1'))}
                              ]
                              redirects: [
                                (Redir
                                  op_id: Redir_GreatAnd
                                  fd: -1
                                  arg_word: {(2)}
                                  spids: [1059]
                                )
                              ]
                            )
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(1)}
                            )
                          ]
                          spids: [1053 1054 1079 -1]
                        )
                      ]
                      spids: [1014 1020 1082]
                    )
                    (C {(eval)} 
                      {
                        (DQ ('shift 3; set ') 
                          (ArithSubPart
                            anode: 
                              (ArithBinary
                                op_id: Arith_Plus
                                left: (ArithWord w:{($ VSub_Number '$3')})
                                right: (ArithWord w:{(Lit_Digits 2)})
                              )
                            spids: [1089 1096]
                          )
                        ) (SQ <' "$@"'>)
                      }
                    )
                  ]
                  spids: [847 1103]
                )
            )
            (C {(shift)})
            (C {(eval)} 
              {
                (DQ ('shift; set ') 
                  (ArithSubPart
                    anode: 
                      (ArithBinary
                        op_id: Arith_Plus
                        left: (ArithWord w:{($ VSub_Number '$1')})
                        right: (ArithWord w:{($ VSub_Name '$OPTLIND')})
                      )
                    spids: [1114 1121]
                  )
                ) (SQ <' "$@"'>)
              }
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$OPTLPENDING'))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (AndOr
                      children: [
                        (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$1'))} {(-le)} 
                          {(DQ ($ VSub_Pound '$#'))} {(Lit_Other ']')}
                        )
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                      op_id: Op_DPipe
                    )
                    (C {(eval)} {(SQ <'set -- "${'>) (DQ ($ VSub_Number '$1')) (SQ <'}" "$@"'>)})
                    (Case
                      to_match: {(DQ ($ VSub_Number '$1'))}
                      arms: [
                        (case_arm
                          pat_list: [{(--)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:OPTLIND)
                                  op: Equal
                                  rhs: 
                                    {
                                      (ArithSubPart
                                        anode: 
                                          (ArithBinary
                                            op_id: Arith_Plus
                                            left: (ArithWord w:{($ VSub_Name '$OPTLIND')})
                                            right: (ArithWord w:{(Lit_Digits 1)})
                                          )
                                        spids: [1203 1210]
                                      )
                                    }
                                  spids: [1202]
                                )
                              ]
                              spids: [1202]
                            )
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(1)}
                            )
                          ]
                          spids: [1198 1199 1218 -1]
                        )
                        (case_arm
                          pat_list: [{(--) (Lit_Other '*')}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:OPTLIND)
                                  op: Equal
                                  rhs: 
                                    {
                                      (ArithSubPart
                                        anode: 
                                          (ArithBinary
                                            op_id: Arith_Plus
                                            left: (ArithWord w:{($ VSub_Name '$OPTLIND')})
                                            right: (ArithWord w:{(Lit_Digits 1)})
                                          )
                                        spids: [1227 1234]
                                      )
                                    }
                                  spids: [1226]
                                )
                              ]
                              spids: [1226]
                            )
                          ]
                          spids: [1221 1223 1237 -1]
                        )
                        (case_arm
                          pat_list: [{(-) (Lit_Other '?') (Lit_Other '*')}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:OPTLPENDING)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          token: <VSub_Number 1>
                                          suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{(-)})
                                          spids: [1248 1252]
                                        )
                                      )
                                    }
                                  spids: [1246]
                                )
                              ]
                              spids: [1246]
                            )
                            (C {(shift)})
                          ]
                          spids: [1240 1243 1259 -1]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
                          spids: [1262 1263 1271 -1]
                        )
                      ]
                      spids: [1189 1195 1274]
                    )
                  ]
                  spids: [-1 1151]
                )
              ]
              spids: [-1 1277]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$OPTLPENDING'))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:OPTLARG)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name OPTLPENDING>
                                suffix_op: 
                                  (StringUnary
                                    op_id: VOp1_Percent
                                    arg_word: 
                                      {
                                        (DQ 
                                          (BracedVarSub
                                            token: <VSub_Name OPTLPENDING>
                                            suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{('?')})
                                            spids: [1306 1310]
                                          )
                                        )
                                      }
                                  )
                                spids: [1302 1312]
                              )
                            }
                          spids: [1301]
                        )
                      ]
                      spids: [1301]
                    )
                    (C {(set)} {(--)} {(DQ ($ VSub_Name '$OPTLARG'))} {(DQ ($ VSub_At '$@'))})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:OPTLPENDING)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name OPTLPENDING>
                                  suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{('?')})
                                  spids: [1330 1334]
                                )
                              )
                            }
                          spids: [1328]
                        )
                      ]
                      spids: [1328]
                    )
                    (C {(unset)} {(OPTLARG)})
                    (AndOr
                      children: [
                        (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$OPTLPENDING'))} {(Lit_Other ']')})
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:OPTLIND)
                              op: Equal
                              rhs: 
                                {
                                  (ArithSubPart
                                    anode: 
                                      (ArithBinary
                                        op_id: Arith_Plus
                                        left: (ArithWord w:{($ VSub_Name '$OPTLIND')})
                                        right: (ArithWord w:{(Lit_Digits 1)})
                                      )
                                    spids: [1363 1370]
                                  )
                                }
                              spids: [1362]
                            )
                          ]
                          spids: [1362]
                        )
                      ]
                      op_id: Op_DPipe
                    )
                    (Case
                      to_match: {(DQ ($ VSub_Number '$1'))}
                      arms: [
                        (case_arm
                          pat_list: [{(Lit_Other '[') (-) (Lit_Other ':') (Lit_Other ']')}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:OPTLERR)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ('bad option: ') 
                                        (EscapedLiteralPart
                                          token: <Lit_EscapedChar '\\`'>
                                        ) (-) ($ VSub_Number '$1') ("'")
                                      )
                                    }
                                  spids: [1390]
                                )
                              ]
                              spids: [1390]
                            )
                            (Case
                              to_match: {(DQ ($ VSub_Number '$3'))}
                              arms: [
                                (case_arm
                                  pat_list: [{(Lit_Other ':') (Lit_Other '*')}]
                                  action: [
                                    (C {(eval)} {(DQ ($ VSub_Number '$4') ('=:'))})
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:OPTLARG)
                                          op: Equal
                                          rhs: {(DQ ($ VSub_Number '$1'))}
                                          spids: [1422]
                                        )
                                      ]
                                      spids: [1422]
                                    )
                                  ]
                                  spids: [1409 1411 1428 -1]
                                )
                                (case_arm
                                  pat_list: [{(Lit_Other '*')}]
                                  action: [
                                    (SimpleCommand
                                      words: [{(printf)} {(SQ <'%s\\n'>)} {(DQ ($ VSub_Name '$OPTLERR'))}]
                                      redirects: [
                                        (Redir
                                          op_id: Redir_GreatAnd
                                          fd: -1
                                          arg_word: {(2)}
                                          spids: [1437]
                                        )
                                      ]
                                    )
                                    (C {(eval)} {(DQ ($ VSub_Number '$4') ("='?'"))})
                                  ]
                                  spids: [1431 1432 1457 -1]
                                )
                              ]
                              spids: [1400 1406 1460]
                            )
                          ]
                          spids: [1383 1387 1463 -1]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [
                            (Case
                              to_match: {(DQ ($ VSub_Number '$3'))}
                              arms: [
                                (case_arm
                                  pat_list: [
                                    {(Lit_Other '*') (DQ ($ VSub_Number '$1')) (Lit_Other ':') 
                                      (Lit_Other ':') (Lit_Other '*')
                                    }
                                  ]
                                  action: [
                                    (C {(eval)} 
                                      {
                                        (DQ ($ VSub_Number '$4') ('=') 
                                          (EscapedLiteralPart
                                            token: <Lit_EscapedChar '\\"'>
                                          ) (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (1) 
                                          (EscapedLiteralPart
                                            token: <Lit_EscapedChar '\\"'>
                                          )
                                        )
                                      }
                                    )
                                    (If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (Sentence
                                              child: 
                                                (C {(Lit_Other '[')} {(-n)} 
                                                  {(DQ ($ VSub_Name '$OPTLPENDING'))} {(Lit_Other ']')}
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:OPTLARG)
                                                  op: Equal
                                                  rhs: {(DQ ($ VSub_Name '$OPTLPENDING'))}
                                                  spids: [1525]
                                                )
                                              ]
                                              spids: [1525]
                                            )
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:OPTLPENDING)
                                                  op: Equal
                                                  rhs: {(SQ )}
                                                  spids: [1531]
                                                )
                                              ]
                                              spids: [1531]
                                            )
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:OPTLIND)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (ArithSubPart
                                                        anode: 
                                                          (ArithBinary
                                                            op_id: Arith_Plus
                                                            left: 
                                                              (ArithWord
                                                                w: {($ VSub_Name '$OPTLIND')}
                                                              )
                                                            right: (ArithWord w:{(Lit_Digits 1)})
                                                          )
                                                        spids: [1535 1542]
                                                      )
                                                    }
                                                  spids: [1534]
                                                )
                                              ]
                                              spids: [1534]
                                            )
                                          ]
                                          spids: [-1 1518]
                                        )
                                      ]
                                      spids: [-1 1545]
                                    )
                                  ]
                                  spids: [1480 1487 1548 -1]
                                )
                                (case_arm
                                  pat_list: [
                                    {(Lit_Other '*') (DQ ($ VSub_Number '$1')) (Lit_Other ':') 
                                      (Lit_Other '*')
                                    }
                                  ]
                                  action: [
                                    (If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (Sentence
                                              child: 
                                                (C {(Lit_Other '[')} {(-n)} 
                                                  {(DQ ($ VSub_Name '$OPTLPENDING'))} {(Lit_Other ']')}
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:OPTLARG)
                                                  op: Equal
                                                  rhs: {(DQ ($ VSub_Name '$OPTLPENDING'))}
                                                  spids: [1584]
                                                )
                                              ]
                                              spids: [1584]
                                            )
                                            (C {(eval)} 
                                              {
                                                (DQ ($ VSub_Number '$4') ('=') 
                                                  (EscapedLiteralPart
                                                    token: <Lit_EscapedChar '\\"'>
                                                  ) (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (1) 
                                                  (EscapedLiteralPart
                                                    token: <Lit_EscapedChar '\\"'>
                                                  )
                                                )
                                              }
                                            )
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:OPTLPENDING)
                                                  op: Equal
                                                  rhs: {(SQ )}
                                                  spids: [1602]
                                                )
                                              ]
                                              spids: [1602]
                                            )
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:OPTLIND)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (ArithSubPart
                                                        anode: 
                                                          (ArithBinary
                                                            op_id: Arith_Plus
                                                            left: 
                                                              (ArithWord
                                                                w: {($ VSub_Name '$OPTLIND')}
                                                              )
                                                            right: (ArithWord w:{(Lit_Digits 1)})
                                                          )
                                                        spids: [1606 1613]
                                                      )
                                                    }
                                                  spids: [1605]
                                                )
                                              ]
                                              spids: [1605]
                                            )
                                          ]
                                          spids: [-1 1577]
                                        )
                                      ]
                                      else_action: [
                                        (If
                                          arms: [
                                            (if_arm
                                              cond: [
                                                (Sentence
                                                  child: 
                                                    (C {(Lit_Other '[')} 
                                                      {
                                                        (DQ 
                                                          (ArithSubPart
                                                            anode: 
                                                              (ArithBinary
                                                                op_id: Arith_Plus
                                                                left: 
                                                                  (ArithWord
                                                                    w: {($ VSub_Number '$2')}
                                                                  )
                                                                right: (ArithWord w:{(Lit_Digits 2)})
                                                              )
                                                            spids: [1628 1635]
                                                          )
                                                        )
                                                      } {(-gt)} {(DQ ($ VSub_Pound '$#'))} {(Lit_Other ']')}
                                                    )
                                                  terminator: <Op_Semi ';'>
                                                )
                                              ]
                                              action: [
                                                (Assignment
                                                  keyword: Assign_None
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (LhsName name:OPTLERR)
                                                      op: Equal
                                                      rhs: 
                                                        {
                                                          (DQ ('option ') 
                                                            (EscapedLiteralPart
                                                              token: <Lit_EscapedChar '\\`'>
                                                            ) (-) ($ VSub_Number '$1') ("' requires an argument")
                                                          )
                                                        }
                                                      spids: [1650]
                                                    )
                                                  ]
                                                  spids: [1650]
                                                )
                                                (Case
                                                  to_match: {(DQ ($ VSub_Number '$3'))}
                                                  arms: [
                                                    (case_arm
                                                      pat_list: [{(Lit_Other ':') (Lit_Other '*')}]
                                                      action: [
                                                        (C {(eval)} {(DQ ($ VSub_Number '$4') ('=:'))})
                                                        (Assignment
                                                          keyword: Assign_None
                                                          pairs: [
                                                            (assign_pair
                                                              lhs: (LhsName name:OPTLARG)
                                                              op: Equal
                                                              rhs: {(DQ ($ VSub_Number '$1'))}
                                                              spids: [1682]
                                                            )
                                                          ]
                                                          spids: [1682]
                                                        )
                                                      ]
                                                      spids: [1669 1671 1688 -1]
                                                    )
                                                    (case_arm
                                                      pat_list: [{(Lit_Other '*')}]
                                                      action: [
                                                        (SimpleCommand
                                                          words: [
                                                            {(printf)}
                                                            {(SQ <'%s\\n'>)}
                                                            {(DQ ($ VSub_Name '$OPTLERR'))}
                                                          ]
                                                          redirects: [
                                                            (Redir
                                                              op_id: Redir_GreatAnd
                                                              fd: -1
                                                              arg_word: {(2)}
                                                              spids: [1697]
                                                            )
                                                          ]
                                                        )
                                                        (C {(eval)} {(DQ ($ VSub_Number '$4') ("='?'"))})
                                                      ]
                                                      spids: [1691 1692 1717 -1]
                                                    )
                                                  ]
                                                  spids: [1660 1666 1720]
                                                )
                                              ]
                                              spids: [-1 1647]
                                            )
                                          ]
                                          else_action: [
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:OPTLIND)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (ArithSubPart
                                                        anode: 
                                                          (ArithBinary
                                                            op_id: Arith_Plus
                                                            left: 
                                                              (ArithWord
                                                                w: {($ VSub_Name '$OPTLIND')}
                                                              )
                                                            right: (ArithWord w:{(Lit_Digits 1)})
                                                          )
                                                        spids: [1727 1734]
                                                      )
                                                    }
                                                  spids: [1726]
                                                )
                                              ]
                                              spids: [1726]
                                            )
                                            (C {(eval)} 
                                              {
                                                (DQ ('OPTLARG=') 
                                                  (EscapedLiteralPart
                                                    token: <Lit_EscapedChar '\\"'>
                                                  ) (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('{') 
                                                  (ArithSubPart
                                                    anode: 
                                                      (ArithBinary
                                                        op_id: Arith_Plus
                                                        left: (ArithWord w:{($ VSub_Number '$2')})
                                                        right: (ArithWord w:{(Lit_Digits 2)})
                                                      )
                                                    spids: [1744 1751]
                                                  ) ('}') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)
                                                )
                                              }
                                            )
                                            (C {(eval)} 
                                              {
                                                (DQ ($ VSub_Number '$4') ('=') 
                                                  (EscapedLiteralPart
                                                    token: <Lit_EscapedChar '\\"'>
                                                  ) (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (1) 
                                                  (EscapedLiteralPart
                                                    token: <Lit_EscapedChar '\\"'>
                                                  )
                                                )
                                              }
                                            )
                                          ]
                                          spids: [1723 1769]
                                        )
                                      ]
                                      spids: [1616 1772]
                                    )
                                  ]
                                  spids: [1552 1558 1775 -1]
                                )
                                (case_arm
                                  pat_list: [
                                    {(Lit_Other '*') (DQ ($ VSub_Number '$1')) (Lit_Other '*')}
                                  ]
                                  action: [
                                    (C {(eval)} 
                                      {
                                        (DQ ($ VSub_Number '$4') ('=') 
                                          (EscapedLiteralPart
                                            token: <Lit_EscapedChar '\\"'>
                                          ) (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (1) 
                                          (EscapedLiteralPart
                                            token: <Lit_EscapedChar '\\"'>
                                          )
                                        )
                                      }
                                    )
                                  ]
                                  spids: [1779 1784 1802 -1]
                                )
                                (case_arm
                                  pat_list: [{(Lit_Other '*')}]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:OPTLERR)
                                          op: Equal
                                          rhs: 
                                            {
                                              (DQ ('bad option: ') 
                                                (EscapedLiteralPart
                                                  token: <Lit_EscapedChar '\\`'>
                                                ) (-) ($ VSub_Number '$1') ("'")
                                              )
                                            }
                                          spids: [1809]
                                        )
                                      ]
                                      spids: [1809]
                                    )
                                    (Case
                                      to_match: {(DQ ($ VSub_Number '$3'))}
                                      arms: [
                                        (case_arm
                                          pat_list: [{(Lit_Other ':') (Lit_Other '*')}]
                                          action: [
                                            (C {(eval)} {(DQ ($ VSub_Number '$4') ('=:'))})
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:OPTLARG)
                                                  op: Equal
                                                  rhs: {(DQ ($ VSub_Number '$1'))}
                                                  spids: [1841]
                                                )
                                              ]
                                              spids: [1841]
                                            )
                                          ]
                                          spids: [1828 1830 1847 -1]
                                        )
                                        (case_arm
                                          pat_list: [{(Lit_Other '*')}]
                                          action: [
                                            (SimpleCommand
                                              words: [
                                                {(printf)}
                                                {(SQ <'%s\\n'>)}
                                                {(DQ ($ VSub_Name '$OPTLERR'))}
                                              ]
                                              redirects: [
                                                (Redir
                                                  op_id: Redir_GreatAnd
                                                  fd: -1
                                                  arg_word: {(2)}
                                                  spids: [1856]
                                                )
                                              ]
                                            )
                                            (C {(eval)} {(DQ ($ VSub_Number '$4') ("='?'"))})
                                          ]
                                          spids: [1850 1851 1876 -1]
                                        )
                                      ]
                                      spids: [1819 1825 1879]
                                    )
                                  ]
                                  spids: [1805 1806 1882 -1]
                                )
                              ]
                              spids: [1471 1477 1885]
                            )
                          ]
                          spids: [1467 1468 1888 -1]
                        )
                      ]
                      spids: [1374 1380 1891]
                    )
                  ]
                  spids: [-1 1294]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:OPTLPENDING)
                      op: Equal
                      rhs: {(DQ ($ VSub_Number '$1'))}
                      spids: [1905]
                    )
                  ]
                  spids: [1905]
                )
                (C {(shift)})
                (C {(set)} {(6)} 
                  {
                    (DQ 
                      (BracedVarSub
                        token: <VSub_Name OPTLPENDING>
                        suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{(--)})
                        spids: [1919 1923]
                      )
                    )
                  } {(DQ ($ VSub_At '$@'))}
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:OPTLPENDING)
                      op: Equal
                      rhs: {(SQ )}
                      spids: [1931]
                    )
                  ]
                  spids: [1931]
                )
                (While
                  cond: [
                    (C {(eval)} {(SQ <'set -- "${'>) (DQ ($ VSub_Number '$1')) (SQ <'}" "$@"'>)})
                    (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Number '$1'))} {(Lit_Other ']')})
                  ]
                  body: 
                    (DoGroup
                      children: [
                        (Case
                          to_match: 
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Number 3>
                                  suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{('=*')})
                                  spids: [1973 1977]
                                )
                              )
                            }
                          arms: [
                            (case_arm
                              pat_list: [{(DQ ($ VSub_Number '$1'))}]
                              action: [
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:OPTLPENDING)
                                      op: Equal
                                      rhs: {(EXACT)}
                                      spids: [1989]
                                    )
                                  ]
                                  spids: [1989]
                                )
                                (ControlFlow
                                  token: <ControlFlow_Break break>
                                )
                              ]
                              spids: [1984 1986 1994 -1]
                            )
                          ]
                          spids: [1970 1980 1997]
                        )
                        (Case
                          to_match: {(DQ ($ VSub_Number '$1'))}
                          arms: [
                            (case_arm
                              pat_list: [
                                {
                                  (DQ 
                                    (BracedVarSub
                                      token: <VSub_Number 3>
                                      suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{('=*')})
                                      spids: [2015 2019]
                                    )
                                  ) (Lit_Other '*')
                                }
                              ]
                              action: [
                                (If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (Sentence
                                          child: 
                                            (C {(Lit_Other '[')} {(-n)} 
                                              {(DQ ($ VSub_Name '$OPTLPENDING'))} {(Lit_Other ']')}
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      action: [
                                        (AndOr
                                          children: [
                                            (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$OPTLPENDING'))} 
                                              {(Lit_Other '=')} {(AMBIGUOUS)} {(Lit_Other ']')}
                                            )
                                            (AndOr
                                              children: [
                                                (C {(eval)} 
                                                  {(SQ <'[ "${'>) 
                                                    (DQ 
                                                      (ArithSubPart
                                                        anode: 
                                                          (ArithBinary
                                                            op_id: Arith_Plus
                                                            left: 
                                                              (ArithWord
                                                                w: {($ VSub_Name '$OPTLPENDING')}
                                                              )
                                                            right: (ArithWord w:{(Lit_Digits 1)})
                                                          )
                                                        spids: [2061 2068]
                                                      )
                                                    ) (SQ <'}" = "$1" ]'>)
                                                  }
                                                )
                                                (Assignment
                                                  keyword: Assign_None
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (LhsName name:OPTLPENDING)
                                                      op: Equal
                                                      rhs: {(AMBIGUOUS)}
                                                      spids: [2077]
                                                    )
                                                  ]
                                                  spids: [2077]
                                                )
                                              ]
                                              op_id: Op_DPipe
                                            )
                                          ]
                                          op_id: Op_DPipe
                                        )
                                      ]
                                      spids: [-1 2038]
                                    )
                                  ]
                                  else_action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:OPTLPENDING)
                                          op: Equal
                                          rhs: {(DQ ($ VSub_Number '$2'))}
                                          spids: [2100]
                                        )
                                      ]
                                      spids: [2100]
                                    )
                                  ]
                                  spids: [2097 2106]
                                )
                              ]
                              spids: [2015 2022 2109 -1]
                            )
                          ]
                          spids: [2005 2011 2112]
                        )
                        (C {(eval)} 
                          {
                            (DQ ('shift 2; set ') 
                              (ArithSubPart
                                anode: 
                                  (ArithBinary
                                    op_id: Arith_Plus
                                    left: (ArithWord w:{($ VSub_Number '$2')})
                                    right: (ArithWord w:{(Lit_Digits 2)})
                                  )
                                spids: [2119 2126]
                              ) (' ')
                            ) (SQ <'"$@"'>)
                          }
                        )
                      ]
                      spids: [1962 2134]
                    )
                )
                (Case
                  to_match: {(DQ ($ VSub_Name '$OPTLPENDING'))}
                  arms: [
                    (case_arm
                      pat_list: [{(AMBIGUOUS)}]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:OPTLERR)
                              op: Equal
                              rhs: 
                                {
                                  (DQ ('option ') (EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) 
                                    (--) 
                                    (BracedVarSub
                                      token: <VSub_Number 3>
                                      suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{('=*')})
                                      spids: [2156 2160]
                                    ) ("' is ambiguous")
                                  )
                                }
                              spids: [2151]
                            )
                          ]
                          spids: [2151]
                        )
                        (Case
                          to_match: {(DQ ($ VSub_Number '$5'))}
                          arms: [
                            (case_arm
                              pat_list: [{(Lit_Other ':') (Lit_Other '*')}]
                              action: [
                                (C {(eval)} {(DQ ($ VSub_Number '$6') ('=:'))})
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:OPTLARG)
                                      op: Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (BracedVarSub
                                              token: <VSub_Number 3>
                                              suffix_op: 
                                                (StringUnary
                                                  op_id: VOp1_DPercent
                                                  arg_word: {('=*')}
                                                )
                                              spids: [2189 2193]
                                            )
                                          )
                                        }
                                      spids: [2187]
                                    )
                                  ]
                                  spids: [2187]
                                )
                              ]
                              spids: [2174 2176 2197 -1]
                            )
                            (case_arm
                              pat_list: [{(Lit_Other '*')}]
                              action: [
                                (SimpleCommand
                                  words: [{(printf)} {(SQ <'%s\\n'>)} {(DQ ($ VSub_Name '$OPTLERR'))}]
                                  redirects: [
                                    (Redir
                                      op_id: Redir_GreatAnd
                                      fd: -1
                                      arg_word: {(2)}
                                      spids: [2206]
                                    )
                                  ]
                                )
                                (C {(eval)} {(DQ ($ VSub_Number '$6') ("='?'"))})
                              ]
                              spids: [2200 2201 2226 -1]
                            )
                          ]
                          spids: [2165 2171 2229]
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:OPTLPENDING)
                              op: Equal
                              rhs: {(SQ )}
                              spids: [2232]
                            )
                          ]
                          spids: [2232]
                        )
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                      spids: [2147 2148 2240 -1]
                    )
                    (case_arm
                      pat_list: [{(EXACT)}]
                      action: [
                        (C {(eval)} 
                          {(SQ <'set "${'>) 
                            (DQ 
                              (ArithSubPart
                                anode: 
                                  (ArithBinary
                                    op_id: Arith_Plus
                                    left: (ArithWord w:{($ VSub_Number '$2')})
                                    right: (ArithWord w:{(Lit_Digits 2)})
                                  )
                                spids: [2253 2260]
                              )
                            ) (SQ <'}" "$@"'>)
                          }
                        )
                      ]
                      spids: [2243 2244 2267 -1]
                    )
                    (case_arm
                      pat_list: [{(DQ )}]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:OPTLERR)
                              op: Equal
                              rhs: 
                                {
                                  (DQ ('bad option: ') 
                                    (EscapedLiteralPart
                                      token: <Lit_EscapedChar '\\`'>
                                    ) (--) 
                                    (BracedVarSub
                                      token: <VSub_Number 3>
                                      suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{('=*')})
                                      spids: [2280 2284]
                                    ) ("'")
                                  )
                                }
                              spids: [2275]
                            )
                          ]
                          spids: [2275]
                        )
                        (Case
                          to_match: {(DQ ($ VSub_Number '$5'))}
                          arms: [
                            (case_arm
                              pat_list: [{(Lit_Other ':') (Lit_Other '*')}]
                              action: [
                                (C {(eval)} {(DQ ($ VSub_Number '$6') ('=:'))})
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:OPTLARG)
                                      op: Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (BracedVarSub
                                              token: <VSub_Number 3>
                                              suffix_op: 
                                                (StringUnary
                                                  op_id: VOp1_DPercent
                                                  arg_word: {('=*')}
                                                )
                                              spids: [2313 2317]
                                            )
                                          )
                                        }
                                      spids: [2311]
                                    )
                                  ]
                                  spids: [2311]
                                )
                              ]
                              spids: [2298 2300 2321 -1]
                            )
                            (case_arm
                              pat_list: [{(Lit_Other '*')}]
                              action: [
                                (SimpleCommand
                                  words: [{(printf)} {(SQ <'%s\\n'>)} {(DQ ($ VSub_Name '$OPTLERR'))}]
                                  redirects: [
                                    (Redir
                                      op_id: Redir_GreatAnd
                                      fd: -1
                                      arg_word: {(2)}
                                      spids: [2330]
                                    )
                                  ]
                                )
                                (C {(eval)} {(DQ ($ VSub_Number '$6') ("='?'"))})
                              ]
                              spids: [2324 2325 2350 -1]
                            )
                          ]
                          spids: [2289 2295 2353]
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:OPTLPENDING)
                              op: Equal
                              rhs: {(SQ )}
                              spids: [2356]
                            )
                          ]
                          spids: [2356]
                        )
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                      spids: [-1 2272 2364 -1]
                    )
                    (case_arm
                      pat_list: [{(Lit_Other '*')}]
                      action: [
                        (C {(shift)})
                        (C {(eval)} 
                          {(SQ <'set "${'>) 
                            (DQ 
                              (ArithSubPart
                                anode: 
                                  (ArithBinary
                                    op_id: Arith_Plus
                                    left: (ArithWord w:{($ VSub_Name '$OPTLPENDING')})
                                    right: (ArithWord w:{(Lit_Digits 1)})
                                  )
                                spids: [2384 2391]
                              )
                            ) (SQ <'}" "${'>) (DQ ($ VSub_Name '$OPTLPENDING')) (SQ <'}" "$@"'>)
                          }
                        )
                      ]
                      spids: [2367 2368 2404 -1]
                    )
                  ]
                  spids: [2138 2144 2407]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:OPTLPENDING)
                      op: Equal
                      rhs: {(SQ )}
                      spids: [2411]
                    )
                  ]
                  spids: [2411]
                )
                (Case
                  to_match: {(DQ ($ VSub_Number '$4'))}
                  arms: [
                    (case_arm
                      pat_list: [{(Lit_Other '*') (Lit_Other '=') (Lit_Other '*')}]
                      action: [
                        (Case
                          to_match: {(DQ ($ VSub_Number '$1'))}
                          arms: [
                            (case_arm
                              pat_list: [{(1)} {(required_argument)} {(2)} {(optional_argument)}]
                              action: [
                                (C {(eval)} 
                                  {
                                    (DQ ($ VSub_Number '$7') ('=') 
                                      (EscapedLiteralPart
                                        token: <Lit_EscapedChar '\\"'>
                                      ) (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (2) 
                                      (EscapedLiteralPart
                                        token: <Lit_EscapedChar '\\"'>
                                      )
                                    )
                                  }
                                )
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:OPTLARG)
                                      op: Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (BracedVarSub
                                              token: <VSub_Number 4>
                                              suffix_op: 
                                                (StringUnary
                                                  op_id: VOp1_Pound
                                                  arg_word: {('*=')}
                                                )
                                              spids: [2478 2482]
                                            )
                                          )
                                        }
                                      spids: [2476]
                                    )
                                  ]
                                  spids: [2476]
                                )
                              ]
                              spids: [2448 2461 2486 -1]
                            )
                            (case_arm
                              pat_list: [{(Lit_Other '*')}]
                              action: [
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:OPTLERR)
                                      op: Equal
                                      rhs: 
                                        {
                                          (DQ ('option ') 
                                            (EscapedLiteralPart
                                              token: <Lit_EscapedChar '\\`'>
                                            ) (--) ($ VSub_Number '$2') ("' doesn't allow an argument")
                                          )
                                        }
                                      spids: [2493]
                                    )
                                  ]
                                  spids: [2493]
                                )
                                (Case
                                  to_match: {(DQ ($ VSub_Number '$6'))}
                                  arms: [
                                    (case_arm
                                      pat_list: [{(Lit_Other ':') (Lit_Other '*')}]
                                      action: [
                                        (C {(eval)} {(DQ ($ VSub_Number '$7') ('=:'))})
                                        (Assignment
                                          keyword: Assign_None
                                          pairs: [
                                            (assign_pair
                                              lhs: (LhsName name:OPTLARG)
                                              op: Equal
                                              rhs: {(DQ ($ VSub_Number '$2'))}
                                              spids: [2525]
                                            )
                                          ]
                                          spids: [2525]
                                        )
                                      ]
                                      spids: [2512 2514 2531 -1]
                                    )
                                    (case_arm
                                      pat_list: [{(Lit_Other '*')}]
                                      action: [
                                        (SimpleCommand
                                          words: [
                                            {(printf)}
                                            {(SQ <'%s\\n'>)}
                                            {(DQ ($ VSub_Name '$OPTLERR'))}
                                          ]
                                          redirects: [
                                            (Redir
                                              op_id: Redir_GreatAnd
                                              fd: -1
                                              arg_word: {(2)}
                                              spids: [2540]
                                            )
                                          ]
                                        )
                                        (C {(eval)} {(DQ ($ VSub_Number '$7') ("='?'"))})
                                      ]
                                      spids: [2534 2535 2560 -1]
                                    )
                                  ]
                                  spids: [2503 2509 2563]
                                )
                              ]
                              spids: [2489 2490 2566 -1]
                            )
                          ]
                          spids: [2439 2445 2569]
                        )
                      ]
                      spids: [2433 2436 2572 -1]
                    )
                    (case_arm
                      pat_list: [{(Lit_Other '*')}]
                      action: [
                        (Case
                          to_match: {(DQ ($ VSub_Number '$1'))}
                          arms: [
                            (case_arm
                              pat_list: [{(1)} {(required_argument)}]
                              action: [
                                (If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (Sentence
                                          child: 
                                            (C {(Lit_Other '[')} 
                                              {
                                                (DQ 
                                                  (ArithSubPart
                                                    anode: 
                                                      (ArithBinary
                                                        op_id: Arith_Plus
                                                        left: (ArithWord w:{($ VSub_Number '$5')})
                                                        right: (ArithWord w:{(Lit_Digits 5)})
                                                      )
                                                    spids: [2602 2609]
                                                  )
                                                )
                                              } {(-gt)} {(DQ ($ VSub_Pound '$#'))} {(Lit_Other ']')}
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      action: [
                                        (Assignment
                                          keyword: Assign_None
                                          pairs: [
                                            (assign_pair
                                              lhs: (LhsName name:OPTLERR)
                                              op: Equal
                                              rhs: 
                                                {
                                                  (DQ ('option ') 
                                                    (EscapedLiteralPart
                                                      token: <Lit_EscapedChar '\\`'>
                                                    ) (--) ($ VSub_Number '$2') ("' requires an argument")
                                                  )
                                                }
                                              spids: [2624]
                                            )
                                          ]
                                          spids: [2624]
                                        )
                                        (Case
                                          to_match: {(DQ ($ VSub_Number '$6'))}
                                          arms: [
                                            (case_arm
                                              pat_list: [{(Lit_Other ':') (Lit_Other '*')}]
                                              action: [
                                                (C {(eval)} {(DQ ($ VSub_Number '$7') ('=:'))})
                                                (Assignment
                                                  keyword: Assign_None
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (LhsName name:OPTLARG)
                                                      op: Equal
                                                      rhs: {(DQ ($ VSub_Number '$2'))}
                                                      spids: [2656]
                                                    )
                                                  ]
                                                  spids: [2656]
                                                )
                                              ]
                                              spids: [2643 2645 2662 -1]
                                            )
                                            (case_arm
                                              pat_list: [{(Lit_Other '*')}]
                                              action: [
                                                (SimpleCommand
                                                  words: [
                                                    {(printf)}
                                                    {(SQ <'%s\\n'>)}
                                                    {(DQ ($ VSub_Name '$OPTLERR'))}
                                                  ]
                                                  redirects: [
                                                    (Redir
                                                      op_id: Redir_GreatAnd
                                                      fd: -1
                                                      arg_word: {(2)}
                                                      spids: [2671]
                                                    )
                                                  ]
                                                )
                                                (C {(eval)} {(DQ ($ VSub_Number '$7') ("='?'"))})
                                              ]
                                              spids: [2665 2666 2691 -1]
                                            )
                                          ]
                                          spids: [2634 2640 2694]
                                        )
                                      ]
                                      spids: [-1 2621]
                                    )
                                  ]
                                  else_action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:OPTLIND)
                                          op: Equal
                                          rhs: 
                                            {
                                              (ArithSubPart
                                                anode: 
                                                  (ArithBinary
                                                    op_id: Arith_Plus
                                                    left: (ArithWord w:{($ VSub_Name '$OPTLIND')})
                                                    right: (ArithWord w:{(Lit_Digits 1)})
                                                  )
                                                spids: [2701 2708]
                                              )
                                            }
                                          spids: [2700]
                                        )
                                      ]
                                      spids: [2700]
                                    )
                                    (C {(eval)} 
                                      {
                                        (DQ ('OPTLARG=') 
                                          (EscapedLiteralPart
                                            token: <Lit_EscapedChar '\\"'>
                                          ) (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('{') 
                                          (ArithSubPart
                                            anode: 
                                              (ArithBinary
                                                op_id: Arith_Plus
                                                left: (ArithWord w:{($ VSub_Number '$5')})
                                                right: (ArithWord w:{(Lit_Digits 5)})
                                              )
                                            spids: [2718 2725]
                                          ) ('}') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)
                                        )
                                      }
                                    )
                                    (C {(eval)} 
                                      {
                                        (DQ ($ VSub_Number '$7') ('=') 
                                          (EscapedLiteralPart
                                            token: <Lit_EscapedChar '\\"'>
                                          ) (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (2) 
                                          (EscapedLiteralPart
                                            token: <Lit_EscapedChar '\\"'>
                                          )
                                        )
                                      }
                                    )
                                  ]
                                  spids: [2697 2743]
                                )
                              ]
                              spids: [2589 2594 2746 -1]
                            )
                            (case_arm
                              pat_list: [{(Lit_Other '*')}]
                              action: [
                                (C {(eval)} 
                                  {
                                    (DQ ($ VSub_Number '$7') ('=') 
                                      (EscapedLiteralPart
                                        token: <Lit_EscapedChar '\\"'>
                                      ) (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (2) 
                                      (EscapedLiteralPart
                                        token: <Lit_EscapedChar '\\"'>
                                      )
                                    )
                                  }
                                )
                              ]
                              spids: [2749 2750 2773 -1]
                            )
                          ]
                          spids: [2580 2586 2776]
                        )
                      ]
                      spids: [2576 2577 2779 -1]
                    )
                  ]
                  spids: [2424 2430 2782]
                )
              ]
              spids: [1894 2785]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [72]
        )
      spids: [68 71]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$test_getopts_long'))} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (FuncDef
              name: test_getopts_long
              body: 
                (BraceGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:expected)
                          op: Equal
                          rhs: {(DQ ($ VSub_Number '$1'))}
                          spids: [2820]
                        )
                        (assign_pair
                          lhs: (LhsName name:had)
                          op: Equal
                          rhs: {(SQ )}
                          spids: [2825]
                        )
                      ]
                      spids: [2820]
                    )
                    (C {(shift)})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:OPTLIND)
                          op: Equal
                          rhs: {(1)}
                          spids: [2831]
                        )
                      ]
                      spids: [2831]
                    )
                    (While
                      cond: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:err)
                              op: Equal
                              rhs: 
                                {
                                  (DQ 
                                    (CommandSubPart
                                      command_list: 
                                        (CommandList
                                          children: [
                                            (Sentence
                                              child: (C {(set)} {(Lit_Other '+') (x)})
                                              terminator: <Op_Semi ';'>
                                            )
                                            (SimpleCommand
                                              words: [{(getopts_long)} {(DQ ($ VSub_At '$@'))}]
                                              redirects: [
                                                (Redir
                                                  op_id: Redir_GreatAnd
                                                  fd: 2
                                                  arg_word: {(1)}
                                                  spids: [2852]
                                                )
                                                (Redir
                                                  op_id: Redir_Great
                                                  fd: -1
                                                  arg_word: {(/dev/null)}
                                                  spids: [2855]
                                                )
                                              ]
                                            )
                                          ]
                                        )
                                      left_token: <Left_CommandSub '$('>
                                      spids: [2840 2858]
                                    )
                                  )
                                }
                              spids: [2838]
                            )
                          ]
                          spids: [2838]
                        )
                        (Sentence
                          child: 
                            (SimpleCommand
                              words: [{(getopts_long)} {(DQ ($ VSub_At '$@'))}]
                              redirects: [
                                (Redir
                                  op_id: Redir_Great
                                  fd: 2
                                  arg_word: {(/dev/null)}
                                  spids: [2868]
                                )
                              ]
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      body: 
                        (DoGroup
                          children: [
                            (C {(eval)} 
                              {
                                (DQ ('opt=') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
                                  (EscapedLiteralPart
                                    token: <Lit_EscapedChar '\\$'>
                                  ) ($ VSub_Number '$2') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)
                                )
                              }
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:had)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ($ VSub_Name '$had') ('|') ($ VSub_Name '$opt') ('@') 
                                        (BracedVarSub
                                          token: <VSub_Name OPTLARG>
                                          suffix_op: 
                                            (StringUnary
                                              op_id: VTest_Hyphen
                                              arg_word: {(unset)}
                                            )
                                          spids: [2893 2897]
                                        ) ('@') 
                                        (BracedVarSub
                                          token: <VSub_Name OPTLIND>
                                          suffix_op: 
                                            (StringUnary
                                              op_id: VTest_Hyphen
                                              arg_word: {(unset)}
                                            )
                                          spids: [2899 2903]
                                        ) ('@') 
                                        (BracedVarSub
                                          token: <VSub_Name OPTLERR>
                                          suffix_op: 
                                            (StringUnary
                                              op_id: VTest_Hyphen
                                              arg_word: {(unset)}
                                            )
                                          spids: [2905 2909]
                                        ) ('@') ($ VSub_Name '$err')
                                      )
                                    }
                                  spids: [2887]
                                )
                              ]
                              spids: [2887]
                            )
                          ]
                          spids: [2873 2915]
                        )
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:had)
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_Name '$had') ('|') 
                                (BracedVarSub
                                  token: <VSub_Name OPTLIND>
                                  suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(unset)})
                                  spids: [2922 2926]
                                ) ('|') ($ VSub_Name '$err')
                              )
                            }
                          spids: [2918]
                        )
                      ]
                      spids: [2918]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$had'))} {(Lit_Other '=')} 
                                  {(DQ ($ VSub_Name '$expected'))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(C {(echo)} {(PASS)})]
                          spids: [-1 2950]
                        )
                      ]
                      else_action: [
                        (C {(echo)} {(FAIL)})
                        (C {(printf)} {(SQ <'Expected: %s\\n     Got: %s\\n'>)} 
                          {(DQ ($ VSub_Name '$expected'))} {(DQ ($ VSub_Name '$had'))}
                        )
                      ]
                      spids: [2958 2981]
                    )
                  ]
                  spids: [2817]
                )
              spids: [2813 2816]
            )
            (While
              cond: [
                (Sentence
                  child: 
                    (AndOr
                      children: [
                        (SimpleCommand
                          words: [{(read)} {(-r)} {(c)}]
                          more_env: [(env_pair name:IFS val:{(SQ )} spids:[2987])]
                        )
                        (SimpleCommand
                          words: [{(read)} {(-r)} {(e)}]
                          more_env: [(env_pair name:IFS val:{(SQ )} spids:[2997])]
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (C {(printf)} {(SQ <'+ %-72s '>)} {(DQ ($ VSub_Name '$c'))})
                    (C {(eval)} 
                      {
                        (DQ ('test_getopts_long ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
                          (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (e) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' ') ($ VSub_Name '$c')
                        )
                      }
                    )
                  ]
                  spids: [3006 3036]
                )
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: -1
                  body: 
                    {(': a\n') 
                      (
'|1|getopts_long: long option specifications must end in an empty argument\n'
                      ) (':a opt "" -a\n') ('|a@unset@2@unset@|2|\n') (':a opt "" -a b\n') ('|a@unset@2@unset@|2|\n') 
                      (':a opt "" -a -a\n') ('|a@unset@2@unset@|a@unset@3@unset@|3|\n') (':a opt "" -ab\n') 
                      ("|a@unset@1@unset@|:@b@2@bad option: `-b'@|2|\n") (':a: opt "" -ab\n') ('|a@b@2@unset@|2|\n') (':a: opt "" -a b\n') ('|a@b@3@unset@|3|\n') 
                      (':a: opt "" -a -a\n') ('|a@-a@3@unset@|3|\n') (':a: opt "" -a\n') ("|:@a@2@option `-a' requires an argument@|2|\n") 
                      (':a:: opt "" -a\n') ('|a@unset@2@unset@|2|\n') (':a:: opt "" -ab\n') ('|a@b@2@unset@|2|\n') (':a:: opt "" -a b\n') 
                      ('|a@unset@2@unset@|2|\n') (':ab: opt "" -ab c\n') ('|a@unset@1@unset@|b@c@3@unset@|3|\n') (':a:: opt "" -a -a\n') 
                      ('|a@unset@2@unset@|a@unset@3@unset@|3|\n') (':a:: opt "" -:a:\n') ("|:@:@1@bad option: `-:'@|a@:@2@unset@|2|\n") (':= opt ""\n') ('|1|\n') 
                      (':: opt ""\n') ("|1|getopts_long: invalid option specification: `::'\n") (': opt ""\n') ('|1|\n') (':a:a opt "" -a\n') 
                      ("|:@a@2@option `-a' requires an argument@|2|\n") (':a::a opt "" -a\n') ('|a@unset@2@unset@|2|\n') (':ab:c:: opt "" -abc -cba -bac\n') 
                      ('|a@unset@1@unset@|b@c@2@unset@|c@ba@3@unset@|b@ac@4@unset@|4|\n') (': opt abc 0 "" --abc\n') ('|abc@unset@2@unset@|2|\n') (': opt abc no_argument "" --abc\n') 
                      ('|abc@unset@2@unset@|2|\n') (': opt abc no_argument "" --abc=foo\n') ("|:@abc@2@option `--abc' doesn't allow an argument@|2|\n") 
                      (': opt abc no_argument "" --abc foo\n') ('|abc@unset@2@unset@|2|\n') (': opt abc 1 "" --abc=foo\n') ('|abc@foo@2@unset@|2|\n') 
                      (': opt abc required_argument "" --abc foo\n') ('|abc@foo@3@unset@|3|\n') (': opt abc required_argument "" --abc=\n') ('|abc@@2@unset@|2|\n') 
                      (': opt abc required_argument "" --abc\n') ("|:@abc@2@option `--abc' requires an argument@|2|\n") (': opt abc 2 "" --abc\n') 
                      ('|abc@unset@2@unset@|2|\n') (': opt abc optional_argument "" --abc=\n') ('|abc@@2@unset@|2|\n') 
                      (': opt abc optional_argument "" --abc=foo\n') ('|abc@foo@2@unset@|2|\n') (': opt abc optional_argument "" --abc --abc\n') 
                      ('|abc@unset@2@unset@|abc@unset@3@unset@|3|\n') (': opt abc 0 abcd 0 "" --abc\n') ('|abc@unset@2@unset@|2|\n') (': opt abc 0 abd 0 "" --ab\n') 
                      ("|:@ab@2@option `--ab' is ambiguous@|2|\n") (': opt abc 0 abcd 0 "" --ab\n') ("|:@ab@2@option `--ab' is ambiguous@|2|\n") 
                      (': opt abc 0 abc 1 "" --ab\n') ('|abc@unset@2@unset@|2|\n') (': opt abc 0 abc 1 "" --abc\n') ('|abc@unset@2@unset@|2|\n') 
                      (': opt abc 0 abc 1 "" --ab\n') ('|abc@unset@2@unset@|2|\n') (': opt abc 0 acd 0 "" --ab\n') ('|abc@unset@2@unset@|2|\n') 
                      (
':abc:d:e::f:: opt ab 0 ac 1 bc 2 cd 1 cde 2 "" -abcdef -a -f -c --a --a= --b=foo -fg\n'
                      ) 
                      (
"|a@unset@1@unset@|b@unset@1@unset@|c@def@2@unset@|a@unset@3@unset@|f@unset@4@unset@|c@--a@6@unset@|:@a@7@option `--a' is ambiguous@|bc@foo@8@unset@|f@g@9@unset@|9|\n"
                      ) ('a opt "" -a\n') ('|a@unset@2@unset@|2|\n') ('a opt "" -a b\n') ('|a@unset@2@unset@|2|\n') 
                      ('a opt "" -a -a\n') ('|a@unset@2@unset@|a@unset@3@unset@|3|\n') ('a opt "" -ab\n') 
                      ("|a@unset@1@unset@|?@unset@2@bad option: `-b'@bad option: `-b'|2|\n") ('a: opt "" -ab\n') ('|a@b@2@unset@|2|\n') ('a: opt "" -a b\n') ('|a@b@3@unset@|3|\n') 
                      ('a: opt "" -a -a\n') ('|a@-a@3@unset@|3|\n') ('a: opt "" -a\n') 
                      (
"|?@unset@2@option `-a' requires an argument@option `-a' requires an argument|2|\n"
                      ) ('a:: opt "" -a\n') ('|a@unset@2@unset@|2|\n') ('a:: opt "" -ab\n') ('|a@b@2@unset@|2|\n') 
                      ('a:: opt "" -a b\n') ('|a@unset@2@unset@|2|\n') ('a:: opt "" -a -a\n') ('|a@unset@2@unset@|a@unset@3@unset@|3|\n') 
                      ('a:: opt "" -:a:\n') ("|?@unset@1@bad option: `-:'@bad option: `-:'|a@:@2@unset@|2|\n") ('= opt ""\n') ('|1|\n') 
                      (': opt ""\n') ('|1|\n') ('\'\' opt ""\n') ('|1|\n') ('a:a opt "" -a\n') 
                      (
"|?@unset@2@option `-a' requires an argument@option `-a' requires an argument|2|\n"
                      ) ('a::a opt "" -a\n') ('|a@unset@2@unset@|2|\n') ('ab:c:: opt "" -abc -cba -bac\n') 
                      ('|a@unset@1@unset@|b@c@2@unset@|c@ba@3@unset@|b@ac@4@unset@|4|\n') ('\'\' opt abc 0 "" --abc\n') ('|abc@unset@2@unset@|2|\n') ('\'\' opt abc no_argument "" --abc\n') 
                      ('|abc@unset@2@unset@|2|\n') ('\'\' opt abc no_argument "" --abc=foo\n') 
                      (
"|?@unset@2@option `--abc' doesn't allow an argument@option `--abc' doesn't allow an argument|2|\n"
                      ) ('\'\' opt abc no_argument "" --abc foo\n') ('|abc@unset@2@unset@|2|\n') 
                      ('\'\' opt abc 1 "" --abc=foo\n') ('|abc@foo@2@unset@|2|\n') ('\'\' opt abc required_argument "" --abc foo\n') ('|abc@foo@3@unset@|3|\n') 
                      ('\'\' opt abc required_argument "" --abc=\n') ('|abc@@2@unset@|2|\n') ('\'\' opt abc required_argument "" --abc\n') 
                      (
"|?@unset@2@option `--abc' requires an argument@option `--abc' requires an argument|2|\n"
                      ) ('\'\' opt abc 2 "" --abc\n') ('|abc@unset@2@unset@|2|\n') 
                      ('\'\' opt abc optional_argument "" --abc=\n') ('|abc@@2@unset@|2|\n') ('\'\' opt abc optional_argument "" --abc=foo\n') ('|abc@foo@2@unset@|2|\n') 
                      ('\'\' opt abc optional_argument "" --abc --abc\n') ('|abc@unset@2@unset@|abc@unset@3@unset@|3|\n') ('\'\' opt abc 0 abcd 0 "" --abc\n') 
                      ('|abc@unset@2@unset@|2|\n') ('\'\' opt abc 0 abd 0 "" --ab\n') 
                      ("|?@unset@2@option `--ab' is ambiguous@option `--ab' is ambiguous|2|\n") ('\'\' opt abc 0 abcd 0 "" --ab\n') 
                      ("|?@unset@2@option `--ab' is ambiguous@option `--ab' is ambiguous|2|\n") ('\'\' opt abc 0 abc 1 "" --ab\n') ('|abc@unset@2@unset@|2|\n') ('\'\' opt abc 0 abc 1 "" --abc\n') 
                      ('|abc@unset@2@unset@|2|\n') ('\'\' opt abc 0 abc 1 "" --ab\n') ('|abc@unset@2@unset@|2|\n') ('\'\' opt abc 0 acd 0 "" --ab\n') 
                      ('|abc@unset@2@unset@|2|\n') ('abc:d:e::f:: opt ab 0 ac 1 bc 2 cd 1 cde 2 "" -abcdef -a -f -c --a --a= --b=foo -fg\n') 
                      (
"|a@unset@1@unset@|b@unset@1@unset@|c@def@2@unset@|a@unset@3@unset@|f@unset@4@unset@|c@--a@6@unset@|?@unset@7@option `--a' is ambiguous@option `--a' is ambiguous|bc@foo@8@unset@|f@g@9@unset@|9|\n"
                      ) (": '' '' a\n") ("|1|getopts_long: invalid variable name: `'\n") (": 1a ''\n") 
                      ("|1|getopts_long: invalid variable name: `1a'\n") ('- a\n') ("|1|getopts_long: invalid option specification: `-'\n") 
                      (":a::a:abcd o ab 1 abc 1 abd 1 abe 1 abc 2 '' -aa --ab 1 --abc\n") ("|a@a@2@unset@|ab@1@4@unset@|:@abc@5@option `--abc' requires an argument@|5|\n") (':\n') 
                      ('|1|getopts_long: not enough arguments\n') ("'\\[$' o -- 0 ' ' 1 '#' required_argument '' '-\\\\\\[$' --\\ =a --\\#=\\$\\$\n") 
                      (
'|\\@unset@1@unset@|\\@unset@1@unset@|\\@unset@1@unset@|[@unset@1@unset@|$@unset@2@unset@| @a@3@unset@|#@$$@4@unset@|4|\n'
                      ) (': o a 1 b 2 c\n') ('|1|getopts_long: long option specifications must end in an empty argument\n') 
                      (': o a 1 b 2\n') ('|1|getopts_long: long option specifications must end in an empty argument\n') 
                      (": o a 1 b 2 c 3 '' --c\n") ("|1|getopts_long: invalid long option type: `3'\n") ('":  " o "  " 1 \'\' "-  " "--  =1"\n') 
                      ('| @unset@1@unset@| @unset@2@unset@|  @1@3@unset@|3|\n') (": o a 1 '' --c\n") ("|:@c@2@bad option: `--c'@|2|\n") (": o a 1 '' --c=foo\n") 
                      ("|:@c@2@bad option: `--c'@|2|\n") (": o ab 1 ac 1 ad 1 a 1 '' --a=1\n") ('|a@1@2@unset@|2|\n')
                    }
                  do_expansion: False
                  here_end: EOF
                  was_filled: True
                  spids: [3038]
                )
              ]
            )
          ]
          spids: [-1 2811]
        )
      ]
      spids: [-1 3043]
    )
  ]
)