anchor.diff:      :initarg :enabledp
       :accessor enabledp)
      (days
  +    :documentation
  +    "The number of days after which the rule action will take
  +    effect. Can be zero, meaning that it should take effect the next
  +    time Amazon's periodic transitioning process runs. One of DAYS or
  +    DATE must be provided."
       :initarg :days
  -    :accessor days)))
  +    :accessor days)
  +   (date
  +    :documentation
  +    "The date at [XXX after?] which the rule takes effect. One of DAYS
  +    or DATE must be provided."
  +    :initarg :date
  +    :accessor date)
  +   (action
  +    :documentation
  +    "The action of this rule; must be either :EXPIRE (the default)
  +    or :TRANSITION. :TRANSITION means matching objects will transition
  +    to Glacier storage."
  +    :initarg :action
  +    :accessor action))
  +  (:documentation
  +   "A lifecycle rule. See
  +   http://docs.amazonwebservices.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#intro-lifecycle-rules.")
  +  (:default-initargs
  +   :prefix (string (gensym))
  +   :enabledp t
  +   :days nil
  +   :date nil
  +   :action :expire))
   
   (defmethod print-object ((rule lifecycle-rule) stream)
     (print-unreadable-object (rule stream :type t)
  -    (format stream "~S expire prefix ~S in ~D day~:P (~:[disabled~;enabled~])"
  +    (format stream "~S ~(~A~) prefix ~S ~
  +                    ~:[on ~A~;in ~:*~D day~:P~*~] ~
  +                    (~:[disabled~;enabled~])"
               (id rule)
  +            (action rule)
               (prefix rule)
               (days rule)
  +            (date rule)
               (enabledp rule))))
   
   ;;; FIXME: The GFs for ENABLE and DISABLE should really be moved
  
positive.code:                                    :sub-resource "lifecycle"
                                     :content-md5 md5
                                     :content content))))
  
negative.code:     (bindings-lifecycle-rules
       (xml-bind 'lifecycle-configuration (body response)))))
  
  (defun delete-bucket-lifecycle (bucket
                                  &key
                                  ((:credentials *credentials*) *credentials*))
    "Delete the lifecycle configuration of BUCKET."
    (submit-request (make-instance 'request
                                   :method :delete
                                   :bucket bucket
                                   :sub-resource "lifecycle")))
  
  (defun (setf bucket-lifecycle) (rules bucket
                                  &key
                                  ((:credentials *credentials*) *credentials*))
    "Set the lifecycle configuration of BUCKET to RULES. RULES is
  coerced to a list if needed. If RULES is NIL, the lifecycle
  configuration is deleted with DELETE-BUCKET-LIFECYCLE."
  