+ (if (memq arg arglist-visited) (error 'circular-list '(arg)))
+ (cl-push arg arglist-visited)
+ (let ((arg (copy-list arg)) junk)
+ ;; Clean the list
+ (let ((p (last arg))) (if (cdr p) (setcdr p (list '&rest (cdr p)))))
+ (if (setq junk (cadr (memq '&cl-defs arg)))
+ (setq arg (delq '&cl-defs (delq junk arg))))
+ (if (memq '&cl-quote arg)
+ (setq arg (delq '&cl-quote arg)))
+ (mapcar 'cl-upcase-arg arg)))
+ (t arg) ; May be we are in initializer
+ ))