anchor.diff:       (wrote-to-ready-channel-p nil
                                  :type boolean
                                  :export nil
  +                               :initarg nil
                                  :documentation "Becomes non-nil when calculation
   is done and the source was sent to the `ready-channel'.")
   
        (wrote-to-ready-channel-lock (bt:make-lock)
                                     :type bt:lock
                                     :export nil
  +                                  :initarg nil
                                     :documentation "Protect
   `wrote-to-ready-channel-p' access.")
   
        (update-thread nil
                       :type t
                       :export nil
  +                    :initarg nil
                       :documentation "Thread where the `filter-preprocessor', `filter' and
   `filter-postprocessor' are run.  We store it in a slot so that we can terminate it.")
   
  
positive.code:      (ready-channel nil
                      :type (or null calispel:channel)
                      :export nil
                      :documentation "Notify listener that source is ready.
  The source object is sent to the channel.
  If update calculation is aborted, nil is sent instead.")
  
negative.code:               :accessor nil
                :export nil
                :documentation "List of funcallables that can be run on suggestions
  of this source.
  This is the low-level implementation, see the `actions' function for the public
  interface.")
  
       (persistent-action nil ; TODO: Should be a list so we can support as many persistent actions as we want.
                          :type (or null function)
  