anchor.diff:      :initform nil
       :reader tm-match-move-action)))
   
  +(defclass tm-include ()
  +  ((spec
  +    :initarg :spec
  +    :reader tm-include-spec)
  +   (refer
  +    :initarg :refer
  +    :initform nil
  +    :reader tm-include-refer)))
  +
   (defclass tm-patterns ()
     ((patterns
       :initarg :patterns
       :accessor patterns)))
   
   (defun make-tmlanguage ()
  -  (make-instance 'tmlanguage :patterns (make-tm-patterns)))
  +  (make-instance 'tmlanguage
  +                 :patterns (make-tm-patterns)
  +                 :repository (make-hash-table :test 'equal)))
   
   (defun make-tm-match (matcher &key name captures move-action)
     (make-instance 'tm-match
  
positive.code: 
  (defun add-tm-pattern (tmlanguage pattern)
    (push pattern (patterns (tmlanguage-patterns tmlanguage))))
  
  (defmethod %syntax-scan-region ((tmlanguage tmlanguage) start end)
    (tm-syntax-scan-region start end))
  
negative.code:                  :content-name content-name
                   :patterns patterns))
  
  (defun make-tm-include (spec)
    (cond ((string= spec "$self")
           (make-instance 'tm-include :type :self))
          ((char= #\# (schar spec 0))
           (make-instance 'tm-include :type :repository :refer (subseq spec 1)))
          (t
           (error "unsupported spec: ~A" spec))))
  
  (defun make-regex-matcher (regex)
    (ppcre:create-scanner regex))
  
  