anchor.diff:        (format stream ":~:[~;VOLATILE-~]POPULATION ~a :TENDENCY ~4,2f% :STYLES ~a :VISIBILITY ~a @ t = ~a"
                 (adjustable-array-p population) (length population) (* tendency 100) (length styles) visibility ticks))))
   
  -(defgeneric copy-town (town)
  +(defmethod print-object ((object inhabitant) stream)
  +  (with-accessors ((type inhabitant-type) (tendency hipsterish-tendency) (styles styles)) object
  +    (print-unreadable-object (object stream :type t :identity t)
  +      (format stream "~@c ~:[(~a) ~;~*~]:TENDENCY ~4,2f%" styles (eql type :hipster) type (* tendency 100)))))
  +
  +(defgeneric copy (town)
     (:documentation "Returns a deep copy of a given town. Useful for when you need to keep the initiator town around.")
     (:method ((town town-snapshot))
       (make-instance 'town-snapshot
                      :hipsterish-tendency (hipsterish-tendency town)
                      :styles              (styles town)
  -                   :population          (map 'vector #'copy-inhabitant (population town))
  +                   :population          (map 'vector #'copy (population town))
                                           ; This line might have to change as I may replace the characters with actual human objects.
                      :time                (ticks town)))
     (:method ((town delayed-town))
       (make-instance 'delayed-town
                      :hipsterish-tendency (hipsterish-tendency town)
                      :styles              (styles town)
  -                   :population          (map 'vector #'copy-inhabitant (population town)) ; Same here.
  +                   :population          (map 'vector #'copy (population town)) ; Same here.
                      :time                (ticks town)
                      :period              (period town)
                      :history             (loop with history = (make-array (list (period town) (length (population town)))
  
positive.code: 
  ;;; Classes
  
  (defstruct inhabitant
    (type :hipster)
    (style #\.)
    hipsterish-tendency)
  
  (defclass town-snapshot ()
    ((ticks :initform 0
  
negative.code:                                               ;; Copying multidimensional arrays = ugh.
                                                for i from 0 below (period town)
                                                do (loop for j from 0 below (length (population town))
                                                         do (setf (aref history i j) (copy (aref (town-history town) i j))))
                                                finally (return history))))
    (:method ((town foggy-town))
      (Make-instance 'foggy-town
                     :visibility          (visibility town)
                     :hipsterish-tendency (hipsterish-tendency town)
                     :styles              (styles town)
                     :population          (map 'vector #'copy (population town))
                     :time                (ticks town)))
    (:method ((town inhabitant))
      (make-instance 'inhabitant
                     :hipsterish-tendency (hipsterish-tendency town)
                     :style               (styles town)
                     :type                (inhabitant-type town))))
  
  ;;; Other methods
  
  