anchor.diff:              (repository-address version-repository))))
   
   (defun find-library (name &optional (error-p t))
  +  "Find a library with name"
     (or (gethash name *libraries*)
         (when error-p
           (error "Library ~A not found" name))))
   
   (defun find-library-versions (library requirement)
  +  "Find library versions that satisfy the requirement"
     (loop for library-version in (library-versions library)
          when (equalp (library-version-matches library-version requirement) :match)
          collect library-version))
   
   (defun list-all-libraries ()
  +  "List all registered libraries"
     (loop for library being the hash-values of *libraries*
        collect library))
   
   (defun register-library (library &key (if-already-registered *if-already-registered-library*))
  +  "Registers a library"
     (check-type if-already-registered (member :append :replace :error :ignore))
     (aif (find-library (library-name library) nil)
          (ecase if-already-registered
  
positive.code:    (suggests :initarg :suggests
  	     :initform nil
  	     :accessor suggests
  	     :documentation "List of requirements the library suggests")
     )
    (:documentation "A library version description"))
  
  (defmethod initialize-instance :after ((library-version library-version) &rest initargs)
  
negative.code: (in-package :cldm)
  
  (defparameter *libraries* (make-hash-table :test #'equalp) "Registered libraries table")
  (defparameter *if-already-registered-library* :append "What to do if a library is already registered. One of :append, :replace, :error, :ignore")
  (defparameter *latest-registered-library* nil "The latest registered library")
  
  (defclass library-version-repository ()
    ((library-version :initarg :library-version
  