(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: [16777215 676 690 16777215]
                )
              ]
              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:16777215 arg_word:{(2)} spids:[717])]
                    )
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 712]
                )
              ]
              spids: [16777215 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'") (Lit_Other '\\') (n)
                          )
                        }
                        {(DQ ($ VSub_Number '$1'))}
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[792])]
                    )
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [774 787 813 16777215]
                )
              ]
              spids: [765 771 816]
            )
            (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: [904 911]
                                          )
                                        )
                                      } {(-gt)} {(DQ ($ VSub_Pound '$#'))} {(Lit_Other ']')}
                                    )
                                  ]
                                  spids: [870]
                                )
                              ]
                              op_id: Op_DPipe
                            )
                          ]
                          action: [
                            (SimpleCommand
                              words: [
                                {(printf)}
                                {
                                  (DQ 
                                    (
'getopts_long: long option specifications must end in an empty argument'
                                    ) (Lit_Other '\\') (n)
                                  )
                                }
                              ]
                              redirects: [
                                (Redir
                                  op_id: Redir_GreatAnd
                                  fd: 16777215
                                  arg_word: {(2)}
                                  spids: [931]
                                )
                              ]
                            )
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(1)}
                            )
                          ]
                          spids: [16777215 926]
                        )
                      ]
                      spids: [16777215 946]
                    )
                    (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: [955 962]
                          )
                        ) (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'") (Lit_Other '\\') (n)
                                  )
                                }
                                {(DQ ($ VSub_Number '$2'))}
                              ]
                              redirects: [
                                (Redir
                                  op_id: Redir_GreatAnd
                                  fd: 16777215
                                  arg_word: {(2)}
                                  spids: [990]
                                )
                              ]
                            )
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(1)}
                            )
                          ]
                          spids: [982 985 1011 16777215]
                        )
                      ]
                      spids: [973 979 1014]
                    )
                    (Case
                      to_match: {(DQ ($ VSub_Number '$1'))}
                      arms: [
                        (case_arm
                          pat_list: [{(0)} {(no_argument)}]
                          spids: [1026 1031 1033 16777215]
                        )
                        (case_arm
                          pat_list: [{(1)} {(required_argument)}]
                          spids: [1036 1041 1043 16777215]
                        )
                        (case_arm
                          pat_list: [{(2)} {(optional_argument)}]
                          spids: [1046 1051 1053 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [
                            (SimpleCommand
                              words: [
                                {(printf)}
                                {
                                  (DQ ('getopts_long: invalid long option type: ') 
                                    (EscapedLiteralPart
                                      token: <Lit_EscapedChar '\\`'>
                                    ) ("%s'") (Lit_Other '\\') (n)
                                  )
                                }
                                {(DQ ($ VSub_Number '$1'))}
                              ]
                              redirects: [
                                (Redir
                                  op_id: Redir_GreatAnd
                                  fd: 16777215
                                  arg_word: {(2)}
                                  spids: [1062]
                                )
                              ]
                            )
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(1)}
                            )
                          ]
                          spids: [1056 1057 1083 16777215]
                        )
                      ]
                      spids: [1017 1023 1086]
                    )
                    (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: [1093 1100]
                          )
                        ) (SQ <' "$@"'>)
                      }
                    )
                  ]
                  spids: [848 1107]
                )
            )
            (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: [1118 1125]
                  )
                ) (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: [1207 1214]
                                      )
                                    }
                                  spids: [1206]
                                )
                              ]
                              spids: [1206]
                            )
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(1)}
                            )
                          ]
                          spids: [1202 1203 1222 16777215]
                        )
                        (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: [1231 1238]
                                      )
                                    }
                                  spids: [1230]
                                )
                              ]
                              spids: [1230]
                            )
                          ]
                          spids: [1225 1227 1241 16777215]
                        )
                        (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: [1252 1256]
                                        )
                                      )
                                    }
                                  spids: [1250]
                                )
                              ]
                              spids: [1250]
                            )
                            (C {(shift)})
                          ]
                          spids: [1244 1247 1263 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
                          spids: [1266 1267 1275 16777215]
                        )
                      ]
                      spids: [1193 1199 1278]
                    )
                  ]
                  spids: [16777215 1155]
                )
              ]
              spids: [16777215 1281]
            )
            (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: [1310 1314]
                                          )
                                        )
                                      }
                                  )
                                spids: [1306 1316]
                              )
                            }
                          spids: [1305]
                        )
                      ]
                      spids: [1305]
                    )
                    (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: [1334 1338]
                                )
                              )
                            }
                          spids: [1332]
                        )
                      ]
                      spids: [1332]
                    )
                    (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: [1367 1374]
                                  )
                                }
                              spids: [1366]
                            )
                          ]
                          spids: [1366]
                        )
                      ]
                      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: [1394]
                                )
                              ]
                              spids: [1394]
                            )
                            (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: [1426]
                                        )
                                      ]
                                      spids: [1426]
                                    )
                                  ]
                                  spids: [1413 1415 1432 16777215]
                                )
                                (case_arm
                                  pat_list: [{(Lit_Other '*')}]
                                  action: [
                                    (SimpleCommand
                                      words: [{(printf)} {(SQ <'%s\\n'>)} {(DQ ($ VSub_Name '$OPTLERR'))}]
                                      redirects: [
                                        (Redir
                                          op_id: Redir_GreatAnd
                                          fd: 16777215
                                          arg_word: {(2)}
                                          spids: [1441]
                                        )
                                      ]
                                    )
                                    (C {(eval)} {(DQ ($ VSub_Number '$4') ("='?'"))})
                                  ]
                                  spids: [1435 1436 1461 16777215]
                                )
                              ]
                              spids: [1404 1410 1464]
                            )
                          ]
                          spids: [1387 1391 1467 16777215]
                        )
                        (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: [1529]
                                                )
                                              ]
                                              spids: [1529]
                                            )
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:OPTLPENDING)
                                                  op: Equal
                                                  rhs: {(SQ )}
                                                  spids: [1535]
                                                )
                                              ]
                                              spids: [1535]
                                            )
                                            (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: [1539 1546]
                                                      )
                                                    }
                                                  spids: [1538]
                                                )
                                              ]
                                              spids: [1538]
                                            )
                                          ]
                                          spids: [16777215 1522]
                                        )
                                      ]
                                      spids: [16777215 1549]
                                    )
                                  ]
                                  spids: [1484 1491 1552 16777215]
                                )
                                (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: [1588]
                                                )
                                              ]
                                              spids: [1588]
                                            )
                                            (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: [1606]
                                                )
                                              ]
                                              spids: [1606]
                                            )
                                            (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: [1610 1617]
                                                      )
                                                    }
                                                  spids: [1609]
                                                )
                                              ]
                                              spids: [1609]
                                            )
                                          ]
                                          spids: [16777215 1581]
                                        )
                                      ]
                                      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: [1632 1639]
                                                          )
                                                        )
                                                      } {(-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: [1654]
                                                    )
                                                  ]
                                                  spids: [1654]
                                                )
                                                (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: [1686]
                                                            )
                                                          ]
                                                          spids: [1686]
                                                        )
                                                      ]
                                                      spids: [1673 1675 1692 16777215]
                                                    )
                                                    (case_arm
                                                      pat_list: [{(Lit_Other '*')}]
                                                      action: [
                                                        (SimpleCommand
                                                          words: [
                                                            {(printf)}
                                                            {(SQ <'%s\\n'>)}
                                                            {(DQ ($ VSub_Name '$OPTLERR'))}
                                                          ]
                                                          redirects: [
                                                            (Redir
                                                              op_id: Redir_GreatAnd
                                                              fd: 16777215
                                                              arg_word: {(2)}
                                                              spids: [1701]
                                                            )
                                                          ]
                                                        )
                                                        (C {(eval)} {(DQ ($ VSub_Number '$4') ("='?'"))})
                                                      ]
                                                      spids: [1695 1696 1721 16777215]
                                                    )
                                                  ]
                                                  spids: [1664 1670 1724]
                                                )
                                              ]
                                              spids: [16777215 1651]
                                            )
                                          ]
                                          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: [1731 1738]
                                                      )
                                                    }
                                                  spids: [1730]
                                                )
                                              ]
                                              spids: [1730]
                                            )
                                            (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: [1748 1755]
                                                  ) ('}') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)
                                                )
                                              }
                                            )
                                            (C {(eval)} 
                                              {
                                                (DQ ($ VSub_Number '$4') ('=') 
                                                  (EscapedLiteralPart
                                                    token: <Lit_EscapedChar '\\"'>
                                                  ) (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (1) 
                                                  (EscapedLiteralPart
                                                    token: <Lit_EscapedChar '\\"'>
                                                  )
                                                )
                                              }
                                            )
                                          ]
                                          spids: [1727 1773]
                                        )
                                      ]
                                      spids: [1620 1776]
                                    )
                                  ]
                                  spids: [1556 1562 1779 16777215]
                                )
                                (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: [1783 1788 1806 16777215]
                                )
                                (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: [1813]
                                        )
                                      ]
                                      spids: [1813]
                                    )
                                    (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: [1845]
                                                )
                                              ]
                                              spids: [1845]
                                            )
                                          ]
                                          spids: [1832 1834 1851 16777215]
                                        )
                                        (case_arm
                                          pat_list: [{(Lit_Other '*')}]
                                          action: [
                                            (SimpleCommand
                                              words: [
                                                {(printf)}
                                                {(SQ <'%s\\n'>)}
                                                {(DQ ($ VSub_Name '$OPTLERR'))}
                                              ]
                                              redirects: [
                                                (Redir
                                                  op_id: Redir_GreatAnd
                                                  fd: 16777215
                                                  arg_word: {(2)}
                                                  spids: [1860]
                                                )
                                              ]
                                            )
                                            (C {(eval)} {(DQ ($ VSub_Number '$4') ("='?'"))})
                                          ]
                                          spids: [1854 1855 1880 16777215]
                                        )
                                      ]
                                      spids: [1823 1829 1883]
                                    )
                                  ]
                                  spids: [1809 1810 1886 16777215]
                                )
                              ]
                              spids: [1475 1481 1889]
                            )
                          ]
                          spids: [1471 1472 1892 16777215]
                        )
                      ]
                      spids: [1378 1384 1895]
                    )
                  ]
                  spids: [16777215 1298]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:OPTLPENDING)
                      op: Equal
                      rhs: {(DQ ($ VSub_Number '$1'))}
                      spids: [1909]
                    )
                  ]
                  spids: [1909]
                )
                (C {(shift)})
                (C {(set)} {(6)} 
                  {
                    (DQ 
                      (BracedVarSub
                        token: <VSub_Name OPTLPENDING>
                        suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{(--)})
                        spids: [1923 1927]
                      )
                    )
                  } {(DQ ($ VSub_At '$@'))}
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:OPTLPENDING)
                      op: Equal
                      rhs: {(SQ )}
                      spids: [1935]
                    )
                  ]
                  spids: [1935]
                )
                (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: [1977 1981]
                                )
                              )
                            }
                          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: [1993]
                                    )
                                  ]
                                  spids: [1993]
                                )
                                (ControlFlow
                                  token: <ControlFlow_Break break>
                                )
                              ]
                              spids: [1988 1990 1998 16777215]
                            )
                          ]
                          spids: [1974 1984 2001]
                        )
                        (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: [2019 2023]
                                    )
                                  ) (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: [2065 2072]
                                                      )
                                                    ) (SQ <'}" = "$1" ]'>)
                                                  }
                                                )
                                                (Assignment
                                                  keyword: Assign_None
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (LhsName name:OPTLPENDING)
                                                      op: Equal
                                                      rhs: {(AMBIGUOUS)}
                                                      spids: [2081]
                                                    )
                                                  ]
                                                  spids: [2081]
                                                )
                                              ]
                                              op_id: Op_DPipe
                                            )
                                          ]
                                          op_id: Op_DPipe
                                        )
                                      ]
                                      spids: [16777215 2042]
                                    )
                                  ]
                                  else_action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:OPTLPENDING)
                                          op: Equal
                                          rhs: {(DQ ($ VSub_Number '$2'))}
                                          spids: [2104]
                                        )
                                      ]
                                      spids: [2104]
                                    )
                                  ]
                                  spids: [2101 2110]
                                )
                              ]
                              spids: [2019 2026 2113 16777215]
                            )
                          ]
                          spids: [2009 2015 2116]
                        )
                        (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: [2123 2130]
                              ) (' ')
                            ) (SQ <'"$@"'>)
                          }
                        )
                      ]
                      spids: [1966 2138]
                    )
                )
                (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: [2160 2164]
                                    ) ("' is ambiguous")
                                  )
                                }
                              spids: [2155]
                            )
                          ]
                          spids: [2155]
                        )
                        (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: [2193 2197]
                                            )
                                          )
                                        }
                                      spids: [2191]
                                    )
                                  ]
                                  spids: [2191]
                                )
                              ]
                              spids: [2178 2180 2201 16777215]
                            )
                            (case_arm
                              pat_list: [{(Lit_Other '*')}]
                              action: [
                                (SimpleCommand
                                  words: [{(printf)} {(SQ <'%s\\n'>)} {(DQ ($ VSub_Name '$OPTLERR'))}]
                                  redirects: [
                                    (Redir
                                      op_id: Redir_GreatAnd
                                      fd: 16777215
                                      arg_word: {(2)}
                                      spids: [2210]
                                    )
                                  ]
                                )
                                (C {(eval)} {(DQ ($ VSub_Number '$6') ("='?'"))})
                              ]
                              spids: [2204 2205 2230 16777215]
                            )
                          ]
                          spids: [2169 2175 2233]
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:OPTLPENDING)
                              op: Equal
                              rhs: {(SQ )}
                              spids: [2236]
                            )
                          ]
                          spids: [2236]
                        )
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                      spids: [2151 2152 2244 16777215]
                    )
                    (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: [2257 2264]
                              )
                            ) (SQ <'}" "$@"'>)
                          }
                        )
                      ]
                      spids: [2247 2248 2271 16777215]
                    )
                    (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: [2284 2288]
                                    ) ("'")
                                  )
                                }
                              spids: [2279]
                            )
                          ]
                          spids: [2279]
                        )
                        (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: [2317 2321]
                                            )
                                          )
                                        }
                                      spids: [2315]
                                    )
                                  ]
                                  spids: [2315]
                                )
                              ]
                              spids: [2302 2304 2325 16777215]
                            )
                            (case_arm
                              pat_list: [{(Lit_Other '*')}]
                              action: [
                                (SimpleCommand
                                  words: [{(printf)} {(SQ <'%s\\n'>)} {(DQ ($ VSub_Name '$OPTLERR'))}]
                                  redirects: [
                                    (Redir
                                      op_id: Redir_GreatAnd
                                      fd: 16777215
                                      arg_word: {(2)}
                                      spids: [2334]
                                    )
                                  ]
                                )
                                (C {(eval)} {(DQ ($ VSub_Number '$6') ("='?'"))})
                              ]
                              spids: [2328 2329 2354 16777215]
                            )
                          ]
                          spids: [2293 2299 2357]
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:OPTLPENDING)
                              op: Equal
                              rhs: {(SQ )}
                              spids: [2360]
                            )
                          ]
                          spids: [2360]
                        )
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                      spids: [16777215 2276 2368 16777215]
                    )
                    (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: [2388 2395]
                              )
                            ) (SQ <'}" "${'>) (DQ ($ VSub_Name '$OPTLPENDING')) (SQ <'}" "$@"'>)
                          }
                        )
                      ]
                      spids: [2371 2372 2408 16777215]
                    )
                  ]
                  spids: [2142 2148 2411]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:OPTLPENDING)
                      op: Equal
                      rhs: {(SQ )}
                      spids: [2415]
                    )
                  ]
                  spids: [2415]
                )
                (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: [2482 2486]
                                            )
                                          )
                                        }
                                      spids: [2480]
                                    )
                                  ]
                                  spids: [2480]
                                )
                              ]
                              spids: [2452 2465 2490 16777215]
                            )
                            (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: [2497]
                                    )
                                  ]
                                  spids: [2497]
                                )
                                (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: [2529]
                                            )
                                          ]
                                          spids: [2529]
                                        )
                                      ]
                                      spids: [2516 2518 2535 16777215]
                                    )
                                    (case_arm
                                      pat_list: [{(Lit_Other '*')}]
                                      action: [
                                        (SimpleCommand
                                          words: [
                                            {(printf)}
                                            {(SQ <'%s\\n'>)}
                                            {(DQ ($ VSub_Name '$OPTLERR'))}
                                          ]
                                          redirects: [
                                            (Redir
                                              op_id: Redir_GreatAnd
                                              fd: 16777215
                                              arg_word: {(2)}
                                              spids: [2544]
                                            )
                                          ]
                                        )
                                        (C {(eval)} {(DQ ($ VSub_Number '$7') ("='?'"))})
                                      ]
                                      spids: [2538 2539 2564 16777215]
                                    )
                                  ]
                                  spids: [2507 2513 2567]
                                )
                              ]
                              spids: [2493 2494 2570 16777215]
                            )
                          ]
                          spids: [2443 2449 2573]
                        )
                      ]
                      spids: [2437 2440 2576 16777215]
                    )
                    (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: [2606 2613]
                                                  )
                                                )
                                              } {(-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: [2628]
                                            )
                                          ]
                                          spids: [2628]
                                        )
                                        (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: [2660]
                                                    )
                                                  ]
                                                  spids: [2660]
                                                )
                                              ]
                                              spids: [2647 2649 2666 16777215]
                                            )
                                            (case_arm
                                              pat_list: [{(Lit_Other '*')}]
                                              action: [
                                                (SimpleCommand
                                                  words: [
                                                    {(printf)}
                                                    {(SQ <'%s\\n'>)}
                                                    {(DQ ($ VSub_Name '$OPTLERR'))}
                                                  ]
                                                  redirects: [
                                                    (Redir
                                                      op_id: Redir_GreatAnd
                                                      fd: 16777215
                                                      arg_word: {(2)}
                                                      spids: [2675]
                                                    )
                                                  ]
                                                )
                                                (C {(eval)} {(DQ ($ VSub_Number '$7') ("='?'"))})
                                              ]
                                              spids: [2669 2670 2695 16777215]
                                            )
                                          ]
                                          spids: [2638 2644 2698]
                                        )
                                      ]
                                      spids: [16777215 2625]
                                    )
                                  ]
                                  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: [2705 2712]
                                              )
                                            }
                                          spids: [2704]
                                        )
                                      ]
                                      spids: [2704]
                                    )
                                    (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: [2722 2729]
                                          ) ('}') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)
                                        )
                                      }
                                    )
                                    (C {(eval)} 
                                      {
                                        (DQ ($ VSub_Number '$7') ('=') 
                                          (EscapedLiteralPart
                                            token: <Lit_EscapedChar '\\"'>
                                          ) (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (2) 
                                          (EscapedLiteralPart
                                            token: <Lit_EscapedChar '\\"'>
                                          )
                                        )
                                      }
                                    )
                                  ]
                                  spids: [2701 2747]
                                )
                              ]
                              spids: [2593 2598 2750 16777215]
                            )
                            (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: [2753 2754 2777 16777215]
                            )
                          ]
                          spids: [2584 2590 2780]
                        )
                      ]
                      spids: [2580 2581 2783 16777215]
                    )
                  ]
                  spids: [2428 2434 2786]
                )
              ]
              spids: [1898 2789]
            )
            (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: [2824]
                        )
                        (assign_pair
                          lhs: (LhsName name:had)
                          op: Equal
                          rhs: {(SQ )}
                          spids: [2829]
                        )
                      ]
                      spids: [2824]
                    )
                    (C {(shift)})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:OPTLIND)
                          op: Equal
                          rhs: {(1)}
                          spids: [2835]
                        )
                      ]
                      spids: [2835]
                    )
                    (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: [2856]
                                                )
                                                (Redir
                                                  op_id: Redir_Great
                                                  fd: 16777215
                                                  arg_word: {(/dev/null)}
                                                  spids: [2859]
                                                )
                                              ]
                                            )
                                          ]
                                        )
                                      left_token: <Left_CommandSub '$('>
                                      spids: [2844 2862]
                                    )
                                  )
                                }
                              spids: [2842]
                            )
                          ]
                          spids: [2842]
                        )
                        (Sentence
                          child: 
                            (SimpleCommand
                              words: [{(getopts_long)} {(DQ ($ VSub_At '$@'))}]
                              redirects: [
                                (Redir
                                  op_id: Redir_Great
                                  fd: 2
                                  arg_word: {(/dev/null)}
                                  spids: [2872]
                                )
                              ]
                            )
                          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: [2897 2901]
                                        ) ('@') 
                                        (BracedVarSub
                                          token: <VSub_Name OPTLIND>
                                          suffix_op: 
                                            (StringUnary
                                              op_id: VTest_Hyphen
                                              arg_word: {(unset)}
                                            )
                                          spids: [2903 2907]
                                        ) ('@') 
                                        (BracedVarSub
                                          token: <VSub_Name OPTLERR>
                                          suffix_op: 
                                            (StringUnary
                                              op_id: VTest_Hyphen
                                              arg_word: {(unset)}
                                            )
                                          spids: [2909 2913]
                                        ) ('@') ($ VSub_Name '$err')
                                      )
                                    }
                                  spids: [2891]
                                )
                              ]
                              spids: [2891]
                            )
                          ]
                          spids: [2877 2919]
                        )
                    )
                    (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: [2926 2930]
                                ) ('|') ($ VSub_Name '$err')
                              )
                            }
                          spids: [2922]
                        )
                      ]
                      spids: [2922]
                    )
                    (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: [16777215 2954]
                        )
                      ]
                      else_action: [
                        (C {(echo)} {(FAIL)})
                        (C {(printf)} {(SQ <'Expected: %s\\n     Got: %s\\n'>)} 
                          {(DQ ($ VSub_Name '$expected'))} {(DQ ($ VSub_Name '$had'))}
                        )
                      ]
                      spids: [2962 2985]
                    )
                  ]
                  spids: [2821]
                )
              spids: [2817 2820]
            )
            (While
              cond: [
                (Sentence
                  child: 
                    (AndOr
                      children: [
                        (SimpleCommand
                          words: [{(read)} {(-r)} {(c)}]
                          more_env: [(env_pair name:IFS val:{(SQ )} spids:[2991])]
                        )
                        (SimpleCommand
                          words: [{(read)} {(-r)} {(e)}]
                          more_env: [(env_pair name:IFS val:{(SQ )} spids:[3001])]
                        )
                      ]
                      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: [3010 3040]
                )
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  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: [3042]
                )
              ]
            )
          ]
          spids: [16777215 2815]
        )
      ]
      spids: [16777215 3047]
    )
  ]
)