(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CFLAG='> name:CFLAG)
          op: assign_op.Equal
          rhs: (rhs_word.Empty)
          spids: [90]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FFLAG='> name:FFLAG)
          op: assign_op.Equal
          rhs: (rhs_word.Empty)
          spids: [92]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MFLAG='> name:MFLAG)
          op: assign_op.Equal
          rhs: (rhs_word.Empty)
          spids: [94]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'HFLAG='> name:HFLAG)
          op: assign_op.Equal
          rhs: {<-h>}
          spids: [96]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USAGE='> name:USAGE)
          op: assign_op.Equal
          rhs: {(DQ <'usage: file [-cL] [-f ffile] [-m mfile] file...'>)}
          spids: [99]
        )
      ]
      redirects: []
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [(C {<getopts>} {<cLf> <Id.Lit_Colon ':'> <m> <Id.Lit_Colon ':'>} {<opt>})]
        )
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {($ Id.VSub_DollarName opt)}
              arms: [
                (case_arm
                  pat_list: [{<c>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CFLAG='> name:CFLAG)
                          op: assign_op.Equal
                          rhs: {<-> ($ Id.VSub_DollarName opt)}
                          spids: [129]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [126 127 132 -1]
                )
                (case_arm
                  pat_list: [{<L>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'HFLAG='> name:HFLAG)
                          op: assign_op.Equal
                          rhs: (rhs_word.Empty)
                          spids: [138]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [135 136 140 -1]
                )
                (case_arm
                  pat_list: [{<m>}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MFLAG='> name:MFLAG)
                              op: assign_op.Equal
                              rhs: {<-> ($ Id.VSub_DollarName opt)}
                              spids: [146]
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MARG='> name:MARG)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName OPTARG)}
                          spids: [151]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [143 144 153 -1]
                )
                (case_arm
                  pat_list: [{<f>}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FFLAG='> name:FFLAG)
                              op: assign_op.Equal
                              rhs: {<-> ($ Id.VSub_DollarName opt)}
                              spids: [159]
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FARG='> name:FARG)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName OPTARG)}
                          spids: [164]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [156 157 166 -1]
                )
                (case_arm
                  pat_list: [{(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\?'> ch:'?')}]
                  action: [
                    (command.Sentence
                      child: (C {<echo>} {($ Id.VSub_DollarName USAGE)})
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [169 170 181 -1]
                )
              ]
              redirects: []
            )
          ]
        )
      redirects: []
    )
    (C {<shift>} 
      {
        (command_sub
          left_token: <Id.Left_Backtick '`'>
          child: (C {<expr>} {($ Id.VSub_DollarName OPTIND)} {<->} {<1>})
          right: <Id.Backtick_Right '`'>
        )
      }
    )
    (C {<exec>} {<'/usr/bin/file'>} {($ Id.VSub_DollarName HFLAG)} {($ Id.VSub_DollarName CFLAG)} 
      {($ Id.VSub_DollarName MFLAG)} {($ Id.VSub_DollarName MARG)} {($ Id.VSub_DollarName FFLAG)} {($ Id.VSub_DollarName FARG)} 
      {(DQ ($ Id.VSub_At '@'))}
    )
  ]
)