anchor.diff:         (validation-error "Attribute ~a not found in ~a"
                            (attribute-name schema-attribute)
                            data))
  -	 (when (not (and (attribute-optional-p schema-attribute)
  -					 (null data-attribute)))
  -	   (schema-validate (attribute-type schema-attribute)
  -						(cdr data-attribute)
  -						schema-attribute))))
  +     (when (not (and (attribute-optional-p schema-attribute)
  +                     (null data-attribute)))
  +       (schema-validate (attribute-type schema-attribute)
  +                        (cdr data-attribute)
  +                        schema-attribute))))
   
   (defmethod %schema-validate ((schema-type (eql :list)) schema data &optional attribute)
     (let ((list-type (or (and (listp schema)
  
positive.code:   )
  
  (defmethod schema-validate (schema data &optional attribute)
    (let ((schema (or (and (symbolp schema) (not (keywordp schema))
                           (find-schema schema))
                      schema)))
      (%schema-validate (schema-type schema) schema data attribute)))
  
  (defmethod schema-validate :after (schema data &optional attribute)
    (when (and attribute (attribute-validator attribute))
      (multiple-value-bind (valid-p error-message) (funcall (attribute-validator attribute) data)
        (when (not valid-p)
          (validation-error (or error-message
                                (format nil "~A: is invalid"
  
negative.code: (defun attribute-validator (attribute)
    (attribute-option :validator attribute))
  
  (defun attribute-add-validator (attribute)
    (attribute-option :add-validator attribute))
  
  (defun attribute-writer (attribute)
    (or (attribute-option :writer attribute)
        (and (attribute-accessor attribute)
  