anchor.diff:  (defvar *assets* nil)
   
   (defstruct asset
  +  "Holds assets meta-data."
     type
     name
  +  alias ;; if non-NIL, should contain the real asset name
     filename
     properties)
   
  -(defun find-asset-declaration (name)
  +(defun find-asset (name)
     (find-if (lambda (it)
                (equal (asset-name it) name))
              *assets*))
  
positive.code:     (push (make-asset :type type
                        :name (key-value :name props)
                        :filename (key-value :file props)
                        :properties props)
            *assets*)))
  
  
negative.code:       (error "No asset loader defined for loading ~S as a ~S~%" filename type))
      loader))
  
  (defun defasset (asset-type extensions load &optional unload)
    "Defines an asset loader for ASSET-TYPE. Extension check will be done upon loading
  against unless EXTENSIONS is :ANY."
    (push (make-asset-loader :load load :unload unload
                             :extensions extensions)
          (gethash asset-type *asset-loaders*)))
  