(command.CommandList
  children: [
    (command.WhileUntil
      keyword: (Token id:Id.KW_While val:while span_id:13)
      cond: [
        (command.Sentence
          child: (C {(getopts)} {(DQ ('hw:'))} {(opt)})
          terminator: (Token id:Id.Op_Semi val:';' span_id:22)
        )
      ]
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {($ Id.VSub_DollarName '$opt')}
              arms: [
                (case_arm
                  pat_list: [{(h)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:hyph)
                          op: assign_op.Equal
                          rhs: {(1)}
                          spids: [37]
                        )
                      ]
                    )
                  ]
                  spids: [33 35 40 -1]
                )
                (case_arm
                  pat_list: [{(w)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:width)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$OPTARG'))}
                          spids: [47]
                        )
                      ]
                    )
                  ]
                  spids: [43 45 52 -1]
                )
              ]
            )
          ]
        )
    )
    (C {(shift)} 
      {
        (word_part.ArithSub
          anode: 
            (arith_expr.Binary
              op_id: Id.Arith_Minus
              left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$OPTIND')})
              right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)})
            )
        )
      }
    )
    (command.Simple
      words: [{(nroff)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:72)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 101
          stdin_parts: [
            ('.ll ')
            (braced_var_sub
              token: (Token id:Id.VSub_Name val:width span_id:78)
              suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(72)})
            )
            ('\n')
            ('.na\n')
            ('.hy ')
            (braced_var_sub
              token: (Token id:Id.VSub_Name val:hyph span_id:86)
              suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(0)})
            )
            ('\n')
            ('.pl 1\n')
            (command_sub
              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:92)
              command_list: (command.CommandList children:[(C {(cat)} {(DQ ($ Id.VSub_At '$@'))})])
            )
            ('\n')
          ]
        )
      ]
    )
    (command.ControlFlow token:(Token id:Id.ControlFlow_Exit val:exit span_id:103) arg_word:{(0)})
  ]
)