      (3 'factor-font-lock-type-name)
      (4 'factor-font-lock-word)
      ("\\(?:\\(\\(?:\\sw\\|\\s_\\)+\\)[ \n]+\\(\\(?:\\sw\\|\\s_\\)+,?\\(?:[ \n]+)\\)?\\)\\|\\([()]\\)\\)"
-      (factor-find-end-of-def)
+      (factor-find-ending-bracket)
       nil
       (1 'factor-font-lock-type-in-stack-effect nil t)
       (2 'factor-font-lock-stack-effect nil t)


(defsubst factor-beginning-of-sexp-pos ()
  (save-excursion (factor-beginning-of-sexp) (point)))

(defun factor-find-end-of-def (&rest foo)
  (save-excursion
    (re-search-forward " ;" nil t)
    (1- (point))))



    (re-search-forward factor-end-of-def-regex nil t)
    (point)))

(defun factor-find-end-of-def (&rest foo)
  (save-excursion
    (re-search-forward "[ \n];" nil t)
    (1- (point))))

(defun factor-find-ending-bracket (&rest foo)
  (save-excursion
    (re-search-forward "[ \n]\)" nil t)
    (point)))

(defun factor-beginning-of-body ()
  (let ((p (point)))
    (and (factor-beginning-of-defun)
