(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:voptions)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [100]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:options)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [104]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:files)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [108]
        )
      ]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:f) op:assign_op.Equal rhs:{(DQ )} spids:[112])]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:head)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [116]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:vf)
          op: assign_op.Equal
          rhs: {(DQ </usr/libexec/vfontedpr>)}
          spids: [120]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tm)
          op: assign_op.Equal
          rhs: {(DQ </usr/share/tmac>)}
          spids: [125]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:postproc)
          op: assign_op.Equal
          rhs: {(DQ <psroff>)}
          spids: [130]
        )
      ]
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: [
        (command.Sentence
          child: (C {<test>} {($ Id.VSub_Pound '$#')} {<-gt>} {<0>})
          terminator: <Id.Op_Semi _>
        )
      ]
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {($ Id.VSub_Number '$1')}
              arms: [
                (case_arm
                  pat_list: [{<-f>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:f)
                          op: assign_op.Equal
                          rhs: {(DQ <filter>)}
                          spids: [164]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:options)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$options') <' -f'>)}
                          spids: [170]
                        )
                      ]
                    )
                  ]
                  spids: [160 161 177 -1]
                )
                (case_arm
                  pat_list: [{<-t>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:voptions)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$voptions') <' -t'>)}
                          spids: [184]
                        )
                      ]
                    )
                  ]
                  spids: [180 181 191 -1]
                )
                (case_arm
                  pat_list: [{<-o> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:voptions)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$voptions') <' '> ($ Id.VSub_Number '$1'))}
                          spids: [199]
                        )
                      ]
                    )
                  ]
                  spids: [194 196 207 -1]
                )
                (case_arm
                  pat_list: [{<-W>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:voptions)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$voptions') <' -W'>)}
                          spids: [214]
                        )
                      ]
                    )
                  ]
                  spids: [210 211 221 -1]
                )
                (case_arm
                  pat_list: [{<-d>}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: (C {<test>} {($ Id.VSub_Pound '$#')} {<-lt>} {<2>})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ ($ Id.VSub_Number '$0') <': option '> ($ Id.VSub_Number '$1') 
                                    <' must have argument'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir.Redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  fd: -1
                                  arg_word: {<2>}
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [228 239]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:options)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName '$options') <' '> ($ Id.VSub_Number '$1') <' '> 
                                ($ Id.VSub_Number '$2')
                              )
                            }
                          spids: [263]
                        )
                      ]
                    )
                    (C {<shift>})
                  ]
                  spids: [224 225 276 -1]
                )
                (case_arm
                  pat_list: [{<-h>}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: (C {<test>} {($ Id.VSub_Pound '$#')} {<-lt>} {<2>})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ ($ Id.VSub_Number '$0') <': option '> ($ Id.VSub_Number '$1') 
                                    <' must have argument'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir.Redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  fd: -1
                                  arg_word: {<2>}
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [283 294]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:head)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_Number '$2'))}
                          spids: [318]
                        )
                      ]
                    )
                    (C {<shift>})
                  ]
                  spids: [279 280 327 -1]
                )
                (case_arm
                  pat_list: [{<-p>}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: (C {<test>} {($ Id.VSub_Pound '$#')} {<-lt>} {<2>})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ ($ Id.VSub_Number '$0') <': option '> ($ Id.VSub_Number '$1') 
                                    <' must have argument'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir.Redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  fd: -1
                                  arg_word: {<2>}
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [334 345]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:postproc)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_Number '$2'))}
                          spids: [369]
                        )
                      ]
                    )
                    (C {<shift>})
                  ]
                  spids: [330 331 378 -1]
                )
                (case_arm
                  pat_list: [{<-> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:options)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$options') <' '> ($ Id.VSub_Number '$1'))}
                          spids: [386]
                        )
                      ]
                    )
                  ]
                  spids: [381 383 394 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:files)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$files') <' '> ($ Id.VSub_Number '$1'))}
                          spids: [401]
                        )
                      ]
                    )
                  ]
                  spids: [397 398 409 -1]
                )
              ]
            )
            (C {<shift>})
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: [(command.Sentence child:(C {<test>} {<-r>} {<index>}) terminator:<Id.Op_Semi _>)]
          action: [
            (command.Simple
              words: [{<echo>}]
              redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{<nindex>})]
            )
            (command.ForEach
              iter_name: i
              iter_words: [{($ Id.VSub_DollarName '$files')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Pipeline
                      children: [
                        (C {<echo>} {(DQ <'? '> ($ Id.VSub_DollarName '$i') <' ?d'>)})
                        (command.Simple
                          words: [
                            {<sed>}
                            {<-e>}
                            {
                              (DQ <'s:/:'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) 
                                <'/:g'>
                              )
                            }
                            {<-e>}
                            {(DQ <'s:?:/:g'>)}
                          ]
                          redirects: [(redir.Redir op:<Id.Redir_DGreat '>>'> fd:-1 arg_word:{<nindex>})]
                        )
                      ]
                      negated: F
                    )
                  ]
                )
            )
            (command.Simple
              words: [{<sed>} {<-f>} {<nindex>} {<index>}]
              redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{<xindex>})]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<test>} {(DQ <x> ($ Id.VSub_DollarName '$f'))} {<Id.Lit_Equals '='>} 
                          {<xfilter>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.Pipeline
                      children: [
                        (command.If
                          arms: [
                            (if_arm
                              cond: [
                                (command.Sentence
                                  child: 
                                    (C {<test>} {(DQ <x> ($ Id.VSub_DollarName '$head'))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<x>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                              action: [
                                (C {($ Id.VSub_DollarName '$vf')} {($ Id.VSub_DollarName '$options')} 
                                  {<-h>} {(DQ ($ Id.VSub_DollarName '$head'))} {($ Id.VSub_DollarName '$files')}
                                )
                              ]
                              spids: [523 538]
                            )
                          ]
                          else_action: [
                            (C {($ Id.VSub_DollarName '$vf')} {($ Id.VSub_DollarName '$options')} 
                              {($ Id.VSub_DollarName '$files')}
                            )
                          ]
                        )
                        (C {<cat>} {($ Id.VSub_DollarName '$tm') </tmac.vgrind>} {<->})
                      ]
                      negated: F
                    )
                  ]
                  spids: [506 520]
                )
              ]
              else_action: [
                (command.Pipeline
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<test>} {(DQ <x> ($ Id.VSub_DollarName '$head'))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<x>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (C {($ Id.VSub_DollarName '$vf')} {($ Id.VSub_DollarName '$options')} {<-h>} 
                              {(DQ ($ Id.VSub_DollarName '$head'))} {($ Id.VSub_DollarName '$files')}
                            )
                          ]
                          spids: [579 594]
                        )
                      ]
                      else_action: [
                        (C {($ Id.VSub_DollarName '$vf')} {($ Id.VSub_DollarName '$options')} 
                          {($ Id.VSub_DollarName '$files')}
                        )
                      ]
                    )
                    (C {<sh>} {<-c>} 
                      {
                        (DQ ($ Id.VSub_DollarName '$postproc') <' -rx1 '> 
                          ($ Id.VSub_DollarName '$voptions') <' -i -mvgrind 2>> xindex'>
                        )
                      }
                    )
                  ]
                  negated: F
                )
              ]
            )
            (command.Simple
              words: [{<sort>} {<-df>} {<-k>} {<1> <Id.Lit_Comma ','> <2>} {<xindex>}]
              redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{<index>})]
            )
            (C {<rm>} {<nindex>} {<xindex>})
          ]
          spids: [420 429]
        )
      ]
      else_action: [
        (command.If
          arms: [
            (if_arm
              cond: [
                (command.Sentence
                  child: 
                    (C {<test>} {(DQ <x> ($ Id.VSub_DollarName '$f'))} {<Id.Lit_Equals '='>} {<xfilter>})
                  terminator: <Id.Op_Semi _>
                )
              ]
              action: [
                (command.Pipeline
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<test>} {(DQ <x> ($ Id.VSub_DollarName '$head'))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<x>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (C {($ Id.VSub_DollarName '$vf')} {($ Id.VSub_DollarName '$options')} {<-h>} 
                              {(DQ ($ Id.VSub_DollarName '$head'))} {($ Id.VSub_DollarName '$files')}
                            )
                          ]
                          spids: [682 697]
                        )
                      ]
                      else_action: [
                        (C {($ Id.VSub_DollarName '$vf')} {($ Id.VSub_DollarName '$options')} 
                          {($ Id.VSub_DollarName '$files')}
                        )
                      ]
                    )
                    (C {<cat>} {($ Id.VSub_DollarName '$tm') </tmac.vgrind>} {<->})
                  ]
                  negated: F
                )
              ]
              spids: [665 679]
            )
          ]
          else_action: [
            (command.Pipeline
              children: [
                (command.If
                  arms: [
                    (if_arm
                      cond: [
                        (command.Sentence
                          child: 
                            (C {<test>} {(DQ <x> ($ Id.VSub_DollarName '$head'))} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<x>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                      action: [
                        (C {($ Id.VSub_DollarName '$vf')} {($ Id.VSub_DollarName '$options')} {<-h>} 
                          {(DQ ($ Id.VSub_DollarName '$head'))} {($ Id.VSub_DollarName '$files')}
                        )
                      ]
                      spids: [738 753]
                    )
                  ]
                  else_action: [
                    (C {($ Id.VSub_DollarName '$vf')} {($ Id.VSub_DollarName '$options')} 
                      {($ Id.VSub_DollarName '$files')}
                    )
                  ]
                )
                (C {($ Id.VSub_DollarName '$postproc')} {<-i>} {($ Id.VSub_DollarName '$voptions')} 
                  {<-mvgrind>}
                )
              ]
              negated: F
            )
          ]
        )
      ]
    )
  ]
)