anchor.diff:            (map-hash
              (lambda (k v)
                (when (and (typep v 'pipeline-spec)
  -                        (with-slots (vertex-stage
  -                                     tesselation-control-stage
  -                                     tesselation-evaluation-stage
  -                                     geometry-stage
  -                                     fragment-stage) v
  -                          (or (func-key= func-key vertex-stage)
  -                              (func-key= func-key tesselation-control-stage)
  -                              (func-key= func-key tesselation-evaluation-stage)
  -                              (func-key= func-key geometry-stage)
  -                              (func-key= func-key fragment-stage))))
  +                        (member func-key (pipeline-stages v) :test #'func-key=))
                  k))
              *gpu-pipeline-specs*)))
   
  
positive.code:    (declarations :initarg :declarations)
     (missing-dependencies :initarg :missing-dependencies :initform nil)
     (cached-compile-results :initarg :compiled :initform nil)))
  
  ;;--------------------------------------------------
  
  
negative.code: 
  (defclass pipeline-spec ()
    ((name :initarg :name)
     (context :initarg :context)
     (cached-compile-results :initform nil)
     (vertex-stage :initarg :vertex-stage)
     (tesselation-control-stage
      :initarg :tesselation-control-stage :initform nil)
     (tesselation-evaluation-stage
      :initarg :tesselation-evaluation-stage :initform nil)
     (geometry-stage
      :initarg :geometry-stage :initform nil)
     (fragment-stage
      :initarg :fragment-stage :initform nil)))
  
  (defclass gpu-func-spec ()
    ((name :initarg :name)
  