(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:removelog)
          op: assign_op.Equal
          rhs: {(DQ (/tmp/remove.log))}
          spids: [7]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {($ Id.VSub_Pound '$#')} {(-eq)} {(0)} {(Id.Lit_RBracket ']')})
              terminator: (Token id:Id.Op_Semi val:';' span_id:25)
            )
          ]
          action: [
            (command.Simple
              words: [
                {(echo)}
                {(DQ ('Usage: ') ($ Id.VSub_Number '$0') (' [-s] list of files or directories'))}
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:38)
                  fd: -1
                  arg_word: {(2)}
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:42)
              arg_word: {(1)}
            )
          ]
          spids: [13 27]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_Number '$1'))} {(Id.Lit_Equals '=')} 
                  {(DQ (-s))} {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:65)
            )
          ]
          action: [(C {(shift)})]
          spids: [49 67]
        )
      ]
      else_action: [
        (command.Simple
          words: [
            {(echo)}
            {
              (DQ 
                (command_sub
                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:82)
                  command_list: (command.CommandList children:[(C {(date)})])
                ) (': ') (${ Id.VSub_Name USER) (': ') ($ Id.VSub_At '$@')
              )
            }
          ]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_DGreat val:'>>' span_id:93)
              fd: -1
              arg_word: {($ Id.VSub_DollarName '$removelog')}
            )
          ]
        )
      ]
    )
    (C {(/bin/rm)} {(DQ ($ Id.VSub_At '$@'))})
    (command.ControlFlow token:(Token id:Id.ControlFlow_Exit val:exit span_id:108) arg_word:{(0)})
  ]
)