anchor.diff:              :return-spec (mapcar #'type-spec->type
                                    (uiop:ensure-list (third spec)))
               :flow-ids flow-id))
  +          ((and (listp spec) (eq (first spec) 'or))
  +           (gen-or-type flow-id (rest spec)))
             ((and (listp spec) (vtype-existsp (first spec)))
              (destructuring-bind (type dimensions) spec
                (make-instance 'v-array :element-type (if (keywordp type)
  
positive.code: (defmethod type->type-spec ((type v-or))
    `(or ,@(mapcar #'type->type-spec (v-types type))))
  
  (defmethod gen-or-type (flow-id &rest types)
    (let ((types (mapcar (lambda (type)
                           (etypecase type
                             (v-type type)
                             ((or list symbol) (type-spec->type
                                                type (when flow-id (flow-id!))))))
                         types)))
      (make-instance 'v-or :types (reduce-types-for-or-type types)
                     :flow-ids flow-id)))
  
  (defmethod reduce-types-for-or-type (types)
    (labels ((inner (type)
  
negative.code: 
  (defmethod print-object ((obj v-or) stream)
    (format stream "#<OR ~{~s~^ ~}>" (mapcar #'type->type-spec (v-types obj))))
  
  ;;------------------------------------------------------------
  ;; Any one of
  