anchor.diff:  (define-test test-func-with-rest-params
     "With &rest, the remaining params, are handed in as a list.  Remaining
      arguments (possibly none) are collected into a list."
  -  (assert-equal (func-with-rest-params) ___)
  -  (assert-equal (func-with-rest-params 1) ___)
  -   (assert-equal (func-with-rest-params 1 :two 333) ___))
  +  (assert-equal (func-with-rest-params) ())
  +  (assert-equal (func-with-rest-params 1) '(1))
  +   (assert-equal (func-with-rest-params 1 :two 333) '(1 :two 333)))
   
   
   ;; ----
  
positive.code: 
  (defun test-key-params ()
    "Key params allow the user to specify params in any order"
     (assert-equal (func-with-key-params) ___)
     (assert-equal (func-with-key-params :a 11 :b 22) ___)
     ; it is not necessary to specify all key parameters
     (assert-equal (func-with-key-params :b 22) ___)
     ; order is not important
     (assert-equal (func-with-key-params :b 22 :a 0) ___))
  
  (defun func-key-params-can-have-defaults (&key  (a 3 a?) (b 4 b?))
    (list a a? b b?))
  
negative.code: 
  (define-test test-optional-parameters
      "Optional parameters are filled in with their default value."
     (assert-equal (func-with-opt-params :test-1 :test-2) '(:test-1 :test-2))
     (assert-equal (func-with-opt-params :test-1) '(test-1 3))
     (assert-equal (func-with-opt-params) '(2 3)))
  
  
  ;; ----
  