(defun parse-method-definition (definition)
(multiple-value-bind (qualifiers fn-list/body) (split-if (compose #'not #'keywordp) definition)
(multiple-value-bind (required-args other-args) (split-if
(fn (arg)
(and (atom arg)
(equal (char (symbol-name arg) 0) #\&)))
(car fn-list/body))
(values qualifiers required-args other-args (cdr fn-list/body)))))Source Context