(with-default-error-location (location)
(let* ((pset (property-set pset))
- (class (make-instance (get-property pset :lisp-metaclass :symbol
- 'sod-class)
+ (best-class (or (get-property pset :lisp-metaclass :symbol nil)
+ (if superclasses
+ (maximum (mapcar #'class-of superclasses)
+ #'subtypep
+ (format nil "Lisp metaclass for ~A"
+ name))
+ 'sod-class)))
+ (class (make-instance best-class
:name name
:superclasses superclasses
:location (file-location location)