+ `(let ,variables
+ (defun ,name (&rest args &aux (option (car args)))
+ ,(mob-options methods))))
+
+(defun mob-options (methods)
+ (labels ((options (m &aux (option (car m)) (vars (cadr m)) (body (caddr m)))
+ (cond ((null m) nil)
+ (t (cons option (cons (lambda body (options (cdddr m))))))))
+ (cons 'case (cons 'option (options methods)))))