anchor.diff:      (= (char-at x (#s x)) "?")))
   
   (defun struct-pat? (x) :hidden
  -  (and (eq? (car x) 'struct-literal)
  -       (symbol? (car x))
  +  (and (eql? (car x) 'struct-literal)
          (= (% (# (cdr x)) 2) 0)))
   
   (defun assert-linearity! (pat seen) :hidden
  
positive.code:     [(! seen) (assert-linearity! pat {})]
      [(list? pat)
       (cond
         [(and (symbol? (cadr pat))
               (eq? (cadr pat) '@))
          (assert-linearity! (caddr pat) seen)]
         [(and (key? (cadr pat))
               (eq? (cadr pat) ':when))
          (assert-linearity! (car pat) seen)]
         [(and (symbol? (cadr pat))
               (eq? (cadr pat) '->))
          (assert-linearity! (caddr pat) seen)]
         [(and (symbol? (car pat))
               (eq? (car pat) 'optional))
          (assert-linearity! (cadr pat) seen)]
         [(struct-pat? pat)
          (for i 3 (# pat) 2
  
negative.code:     (cond
        [(list? pattern)
         (cond
           [(eql? (cadr pattern) '@)
            `(,@(compile-pattern-bindings (caddr pattern) symb) ,@(compile-pattern-bindings (car pattern) symb))]
           [(eql? (cadr pattern) ':when)
            (compile-pattern-bindings (car pattern) symb)]
           [(eql? (cadr pattern) '->)
            (compile-pattern-bindings (caddr pattern) `(,(car pattern) ,symb))]
           [(eql? (car pattern) 'optional)
            (compile-pattern-bindings (cadr pattern) symb)]
           [(struct-pat? pattern)
            (let* [(out '())]
  