anchor.diff:                             (list (symbol->string name) `(or ,name nil))]
                             [(?name) (list (symbol->string name) `(or ,name nil))])
                           fields))
  -         (name (case symbol
  -                 [(hide ?x) x]
  -                 [?x x]))
  +         (name (symb-name symbol))
            (hide (and (list? symbol) (eq? (car symbol) 'hide)))]
       `(define ,name ,@(if hide '(:hidden) '())
          ,@(if (nil? docs) '() (list docs))
  
positive.code:       (map (lambda (x)
               (map (cut push-cdr! work <>) (field->def name x)))
             fields)
        (push-cdr! work (make-meta-decl name constr pred ; names
                                        clauses ; clauses
                                        meta fields)) ; clauses we use
        (unpack work 1 (n work)))))
  
negative.code:                   `((.<! ,self ,(symbol->string name) ,val))
                    (or docs `nil)))])))
  
  (defun field-name (x) :hidden
    (case x
      [(immutable ?name . _) name]
      [(mutable ?name . _) name]
      [?name name]))
  
  (defun symb-name (x) :hidden
    (case x
      [(hide ?x) x]
      [?x x]))
  
  (defun make-constructor (docs type-name fields symbol spec) :hidden
    (let* [(lambda-list (map field-name fields))
  