anchor.diff:          (assert-linearity! (caddr pat) seen)]
          [(eq? (car pat) 'optional)
           (assert-linearity! (cadr pat) seen)]
  +       [(struct-pat? pat)
  +        (for i 3 (# pat) 2
  +          (assert-linearity! (nth pat i) seen))]
          [(cons-pattern? pat)
           (let* [(seen '())]
             (for i 1 (pattern-# pat) 1
  
positive.code:     [(meta? pat)
       (if (get-idx seen (get-idx pat :contents))
         (error (.. "pattern is not linear: seen " (pretty pat) " more than once"))
         (set-idx! seen (get-idx pat :contents) true))]))
  
  (defun compile-pattern-test (pattern symb) :hidden
    (cond
      [(list? pattern)
       (cond
  
negative.code:            | ( as pattern metavar ) ;; as
             | ( pattern * ) ;; list
             | ( pattern + . pattern ) ;; list+rest
             | ( struct-literal :name pattern :name pattern ) ;; structure literal
             | { :name pattern :name pattern } ;; structure literal
   literal ::= number | string | boolean | symbol | key
   metavar ::= '?' symbol
   ```
  