anchor.diff:  
   (defgeneric translate-complex-type (object)
     (:documentation "Translates tuples with the 'bert' tag to corresponding Lisp objects and vice versa."))
  +
  +(defgeneric encode (object &key berp-header)
  +  (:documentation "Encodes the BERT-translatable object to a vector of bytes."))
   
   
   (defclass bert-time ()
  
positive.code:   (with-slots (megaseconds seconds microseconds) time
      (tuple '|bert| '|time| megaseconds seconds microseconds)))
  
  (defmethod encode ((time bert-time))
    (encode (translate-complex-type time)))
  
  
  
negative.code: 	    for key being the hash-keys in dict using (hash-value value)
  	    collect (tuple key value)) ))
    
  (defmethod encode ((dict hash-table) &key &allow-other-keys)
    (encode (translate-complex-type dict)))
  
  
  (defmethod encode (object &key &allow-other-keys)
    (cleric:encode object :version-tag t))
  
  
  (defmethod encode :around (object &key berp-header)
    (let ((bytes (call-next-method object :berp-header nil)))
      (if berp-header
  	(concatenate 'vector (cleric::uint32-to-bytes (length bytes)) bytes)
  	bytes)))
  
  
  (deftype bert-translatable ()
  