(command.CommandList
  children: [
    (C {<.>} {<../src/shflags>})
    (C {<DEFINE_boolean>} {(SQ <force>)} {<false>} {(SQ <'force overwriting'>)} {(SQ <f>)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FLAGS_HELP)
          op: assign_op.Equal
          rhs: {(DQ <'USAGE: '> ($ Id.VSub_Number '$0') <' [flags] filename'>)}
          spids: [91]
        )
      ]
    )
    (command.ShFunction
      name: write_date
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{<date>}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_Number '$1'))}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: die
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-gt>} {<0>} {<Id.Lit_RBracket ']'>})
                (command.Simple
                  words: [{<echo>} {(DQ <'error: '> ($ Id.VSub_At '$@'))}]
                  redirects: [(redir.Redir op:<Id.Redir_GreatAnd '>&'> fd:-1 arg_word:{<2>})]
                )
              ]
            )
            (C {<flags_help>})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
        )
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<FLAGS>} {(DQ ($ Id.VSub_At '$@'))})
        (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
      ]
    )
    (C {<eval>} {<Id.KW_Set set>} {<-->} {(DQ (${ Id.VSub_Name FLAGS_ARGV))})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-gt>} {<0>} {<Id.Lit_RBracket ']'>})
        (C {<die>} {(SQ <'filename missing'>)})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:filename)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$1')}
          spids: [207]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ (${ Id.VSub_Name filename))} {<-a>} 
          {(${ Id.VSub_Name FLAGS_force)} {<-eq>} {(${ Id.VSub_Name FLAGS_FALSE)} {<Id.Lit_RBracket ']'>}
        )
        (C {<die>} {(SQ <'filename exists; not overwriting'>)})
      ]
    )
    (C {<write_date>} {(DQ (${ Id.VSub_Name filename))})
  ]
)