(CommandList
  children: [
    (C {(.)} {(../src/shflags)})
    (C {(DEFINE_boolean)} {(SQ <force>)} {(false)} {(SQ <'force overwriting'>)} {(SQ <f>)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:FLAGS_HELP)
          op: Equal
          rhs: {(DQ ('USAGE: ') ($ VSub_Number '$0') (' [flags] filename'))}
          spids: [91]
        )
      ]
      spids: [91]
    )
    (FuncDef
      name: write_date
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(date)}]
              redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(DQ ($ VSub_Number '$1'))})]
            )
          ]
          spids: [104]
        )
      spids: [100 103]
    )
    (FuncDef
      name: die
      body: 
        (BraceGroup
          children: [
            (AndOr
              ops: [Op_DAmp]
              children: [
                (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-gt)} {(0)} {(Lit_Other ']')})
                (SimpleCommand
                  words: [{(echo)} {(DQ ('error: ') ($ VSub_At '$@'))}]
                  redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
                )
              ]
            )
            (C {(flags_help)})
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [121]
        )
      spids: [117 120]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(FLAGS)} {(DQ ($ VSub_At '$@'))})
        (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
      ]
    )
    (C {(eval)} {(set)} {(--)} {(DQ (${ VSub_Name FLAGS_ARGV))})
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-gt)} {(0)} {(Lit_Other ']')})
        (C {(die)} {(SQ <'filename missing'>)})
      ]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:filename)
          op: Equal
          rhs: {($ VSub_Number '$1')}
          spids: [207]
        )
      ]
      spids: [207]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(Lit_Other '[')} {(-f)} {(DQ (${ VSub_Name filename))} {(-a)} {(${ VSub_Name FLAGS_force)} 
          {(-eq)} {(${ VSub_Name FLAGS_FALSE)} {(Lit_Other ']')}
        )
        (C {(die)} {(SQ <'filename exists; not overwriting'>)})
      ]
    )
    (C {(write_date)} {(DQ (${ VSub_Name filename))})
  ]
)