anchor.diff:    rmIf = pushIf (condition: val: val);
   
     evalIf = pushIf (condition: val:
  -    # guess: empty else part.
  -    ifEnable condition val
  +    if condition then val else mkNotdef
     );
   
     delayIf = pushIf (condition: val:
  
positive.code:     if all __isAttrs opts then
        zip (attr: opts:
          let
            name = if path == "" then attr else path + "." + attr;
            test = partition isOption opts;
            opt = {
              inherit name;
              merge = mergeDefaultOption;
              apply = id;
            } // (head test.right);
          in
            if test.right == [] then handleOptionSets optionHandler name (map delayIf test.wrong)
            else addLocation "while evaluating the option ${name}:" (
              if tail test.right != [] then throw "Multiple options."
              else export opt (map evalIf test.wrong)
            )
        ) opts
     else addLocation "while evaluating ${path}:" (notHandle opts);
  
negative.code:     };
  
  
    isNotdef = attrs: (typeOf attrs) == "notdef";
    mkNotdef = {_type = "notdef";};
  
  
    isThenElse = attrs: (typeOf attrs) == "then-else";
    mkThenElse = attrs:
      assert attrs ? thenPart && attrs ? elsePart;
  