anchor.diff:                    (defconstant* ,(mksym "+itunes-" (first e) "+") ,(second e))
                     (export ',(mksym "+itunes-" (first e) "+")))))))
   
  +;;; generate the ilst atoms/constants/exports
   (mk-ilst-atoms-constants)
   
  -;; (defclass atom-aART (atom-ilst) ())
  -;; (defclass atom-akID (atom-ilst) ())
  -;; (defclass atom-apID (atom-ilst) ())
  -;; (defclass atom-atID (atom-ilst) ())
  -;; (defclass atom-cnID (atom-ilst) ())
  -;; (defclass atom-covr (atom-ilst) ())
  -;; (defclass atom-cpil (atom-ilst) ())
  -;; (defclass atom-cprt (atom-ilst) ())
  -;; (defclass atom-disk (atom-ilst) ())
  -;; (defclass atom-geID (atom-ilst) ())
  -;; (defclass atom-gnre (atom-ilst) ())
  -;; (defclass atom-pgap (atom-ilst) ())
  -;; (defclass atom-purd (atom-ilst) ())
  -;; (defclass atom-rtng (atom-ilst) ())
  -;; (defclass atom-sfID (atom-ilst) ())
  -;; (defclass atom-soaa (atom-ilst) ())
  -;; (defclass atom-soal (atom-ilst) ())
  -;; (defclass atom-soar (atom-ilst) ())
  -;; (defclass atom-soco (atom-ilst) ())
  -;; (defclass atom-sonm (atom-ilst) ())
  -;; (defclass atom-stik (atom-ilst) ())
  -;; (defclass atom-tmpo (atom-ilst) ())
  -;; (defclass atom-trkn (atom-ilst) ())
  -;; (defclass atom-©alb (atom-ilst) ())
  -;; (defclass atom-©art (atom-ilst) ())
  -;; (defclass atom-©cmt (atom-ilst) ())
  -;; (defclass atom-©com (atom-ilst) ())
  -;; (defclass atom-©day (atom-ilst) ())
  -;; (defclass atom-©enc (atom-ilst) ())
  -;; (defclass atom-©gen (atom-ilst) ())
  -;; (defclass atom-©grp (atom-ilst) ())
  -;; (defclass atom-©lyr (atom-ilst) ())
  -;; (defclass atom-©nam (atom-ilst) ())
  -;; (defclass atom-©too (atom-ilst) ())
  -;; (defclass atom-©trk (atom-ilst) ())
  -;; (defclass atom-©wrt (atom-ilst) ())
   
   (defclass atom-data (mp4-atom)
     ((atom-version :accessor atom-version :initarg :atom-version :initform nil)
  
positive.code: 
    (with-mp4-atom-slots (me)
      (stream-seek mp4-file (- atom-size 8) :current)))
  
  ;; (defclass utf8-atom (mp4-atom)
  ;;   ((astring :accessor astring :initform nil))
  ;;   (:documentation "UTF-8 atom" ))
  
  ;; (defmethod initialize-instance :after ((me utf8-atom) &key mp4-file &allow-other-keys)
  ;;   "Create and read in UTF-8 string atom"
  ;;   (declare #.utils:*standard-optimize-settings*)
  ;;   (setf (astring me) (stream-read-utf-8-string mp4-file (- (atom-size me) 8))))
  
  ;; (defclass u8-atom (mp4-atom)
  ;;   ((val :accessor val :initform nil))
  ;;   (:documentation "8-bit atom" ))
  
  ;; (defmethod initialize-instance :after ((me u8-atom) &key mp4-file &allow-other-keys)
  ;;   "Create and read in UTF-8 string atom"
  ;;   (declare #.utils:*standard-optimize-settings*)
  ;;   (setf (val me) (stream-read-u8 mp4-file)))
  
  ;; (defclass u16-atom (mp4-atom)
  ;;   ((val :accessor val :initform nil))
  ;;   (:documentation "8-bit atom" ))
  
  ;; (defmethod initialize-instance :after ((me u16-atom) &key mp4-file &allow-other-keys)
  ;;   "Create and read in UTF-8 string atom"
  ;;   (declare #.utils:*standard-optimize-settings*)
  ;;   (setf (val me) (stream-read-u16 mp4-file)))
  
  ;;; For atoms we don't implement yet, subclass atom-skip
  (defclass atom----- (atom-skip) ())
  
negative.code: 
  ;;;; Atom names/ids. Each one of these has an associated "value"(nee data) atom under it
  (defconstant* +root+                  (mk-mp4-atom-type #\R #\O #\O #\T)  "fake root for atom tree")
  
  (defconstant* +itunes-ilst-data+      (mk-mp4-atom-type #\d #\a #\t #\a)  "carries the actual data under an ilst atom")
  
  