anchor.diff:      (make-load-form-saving-slots token :slot-names slots :environment environment)))
   
   (defclass eof (token)
  -  ((value :initform "<EOF>")))
  +  ((value :initform nil))
  +  (:documentation
  +   "A token representing end of file."))
   (defmethod print-object ((eof eof) stream)
  -  (format stream "#<EOF>"))
  -(define-once-global +eof+ (make-instance 'eof))
  -
  -(defun plusify (symbol)
  -  (intern (concatenate 'string "+" (symbol-name symbol) "+")))
  +  (format stream "#<~W>" (class-name (class-of eof))))
  +(define-once-global +eof+ (make-instance 'eof)
  +  (:documentation
  +   "An instance of the `eof' token."))
   
   (defclass a-word (token)
  -  ())
  +  ()
  +  (:documentation
  +   "A base class for tokens that aren't \"special\" in the shell language.
  +
  +These tokens represent file paths, quoted strings, command names, and
  +similar tokens.  Its a grab-bag of miscellaneous token types."))
   
   (defclass simple-word (a-word)
     ((text
       :initarg :text
       :accessor simple-word-text
       :initform (required)
  -    :type string)))
  +    :type string))
  +  (:documentation
  +   "A class for plain-old sequences of characters.
  +
  +There's nothing special going on here."))
   (defmethod print-object ((simple-word simple-word) stream)
     (format stream "#<~A ~S>" (class-name (class-of simple-word)) (simple-word-text simple-word)))
   
  
positive.code:   ((parts :type vector
            :initform (required)
            :accessor compound-word-parts
            :initarg :parts)))
  (defmethod print-object ((compound-word compound-word) stream)
    (format stream "#<~A ~S>" (class-name (class-of compound-word)) (compound-word-parts compound-word)))
  
  (defclass assignment-word (a-word)
    ((name
  
negative.code: (defparameter *operators* (fset:empty-map))
  
  (defclass operator (literal-token)
    ()
    (:documentation
     "A token class for operators.
  
  Operators are treated specially when tokenizing, but they aren't any
  different from other literal tokens after tokenization is complete.
  All the same, this class exists to help group them all together."))
  
  (defmacro define-operator (name string &optional (superclasses '(operator)) slots &body options)
    (check-type name symbol)
  