anchor.diff:                          (emit :fresh-line)))))
   
   
  +(eval-when (:compile-toplevel :load-toplevel :execute)
  +
  +  (defun camel-case (name &key capitalize-initial)
  +    (let ((chunks (split-sequence #\- (string name))))
  +      (format nil "~{~A~}"
  +              (cons (funcall (if capitalize-initial
  +                                 (function string-capitalize)
  +                                 (function string-downcase))
  +                             (first chunks))
  +                    (mapcar (function string-capitalize)
  +                            (rest chunks))))))
  +
  +  (defun snail-case (name)
  +    "
  +Rules:    - With no alphanumeric, we don't touch it (assumed name of a C operator).
  +          - Otherwise convert all dashes to underline.
  +"
  +    (if (find-if (lambda (ch) (or (alphanumericp ch) (char= #\$ ch))) name)
  +        (let ((chunks (split-sequence #\- (string name))))
  +          (format nil
  +                  "~{~A~^_~}"
  +                  ;; (if (every (lambda (ch)
  +                  ;;              (if (alpha-char-p ch)
  +                  ;;                  (upper-case-p ch)
  +                  ;;                  t))
  +                  ;;            name)
  +                  ;;     "~(~{~A~^_~}~)"
  +                  ;;     "~{~A~^_~}")
  +                  chunks))
  +        name))
  +
  +  (defun c-identifier (&rest items)
  +    (intern (snail-case (format nil "~{~A~}" items))
  +            *c-package-name*)))
  +
   ;;; --------------------------------------------------------------------
   ;;;
   
  
positive.code: (define-statement stmt-return () (return-result) "return"
    :generate (progn
                (unless *same-line* (emit :fresh-line))
                (emit "return" " ")
                (generate (return-result self))
                (emit ";" :newline)))
  
  (define-statement stmt-goto () (identifier) "goto"
  
negative.code:   ;; `(,(class-name (class-of self)) ,(case-value self)
    ;;    ,@(when (sub-statement self) (list (sub-statement self))))
    ;;                                       ; c-sexp
    ;; `(,(c-identifier (c-keyword self)) ,(c-sexp (case-value self))
    ;;    ,@(when (sub-statement self) (list (c-sexp (sub-statement self)))))
    ;;                                       ; generate
    :generate (progn
  