anchor.diff:        functor = (defaultFunctor name) // { wrapped = [ t1 t2 ]; };
       };
   
  +    # Either value of type `finalType` or `coercedType`, the latter is
  +    # converted to `finalType` using `coerceFunc`.
       coercedTo = coercedType: coerceFunc: finalType:
         assert coercedType.getSubModules == null;
         mkOptionType rec {
  
positive.code:         };
        };
  
      enum = values:
        let
          show = v:
  
negative.code:         functor = (defaultFunctor name) // { payload = values; binOp = a: b: unique (a ++ b); };
        };
  
      # Either value of type `t1` or `t2`.
      either = t1: t2: mkOptionType rec {
        name = "either";
        description = "${t1.description} or ${t2.description}";
  