       (set-match-data `(,(1+ (match-beginning 0)) ,(1- end))))
     found))
 
+
 (defconst fstar-syntax-additional
   (let ((id fstar-syntax-id))
     `((,fstar-syntax-cs
        (0 'font-lock-type-face))
+      (,fstar-syntax-universe
+       (1 'fstar-universe-face))
       (,(concat "{\\(:" id "\\) *\\([^}]*\\)}")
        (1 'font-lock-builtin-face append)
        (2 'fstar-attribute-face append))

(defconst fstar-syntax-cs (rx symbol-start
                         (any "A-Z") (* (or wordchar (syntax symbol)))
                         symbol-end))

(defun fstar-find-id-maybe-type (bound must-find-type)
  "Find var:type pair between point and BOUND.

  "Face used to use for /\\ and \//."
  :group 'fstar)

(defface fstar-universe-face
  '((t :foreground "forest green"))
  "Face used for universe levels and variables"
  :group 'fstar)

(defun fstar-subexpr-pre-matcher (rewind-to &optional bound-to)
  "Move past REWIND-TO th group, then return end of BOUND-TO th."
  (goto-char (match-end rewind-to))
