anchor.diff:            test = partition isOption opts;
             opt = ({ merge = mergeDefaultOption; apply = id; } // head test.right);
           in
  -          if test.right == [] then mergeOptionSets noOption name test.wrong
  +          if test.right == [] then mergeOptionSets noOption name (map delayIf test.wrong)
             else if tail test.right != [] then throw "Multiple options for '${name}'."
             else if test.wrong == [] then opt.apply opt.default
  -          else opt.apply (opt.merge name test.wrong)
  +          else opt.apply (opt.merge name (map evalIf test.wrong))
         ) opts
      else noOption path opts;
   
  
positive.code:   uniqFlattenAttr = f: attr: default: x:
      if x == []
      then default
      else let h = f (head x); t = tail x; in
        if elem h default
        then uniqFlattenAttr f attr default t
        else uniqFlattenAttr f attr (default ++ [h]) (toList (getAttr [attr] [] h) ++ t)
      ;
  
    /* Options. */
  
  
negative.code:           name = if path == "" then attr else path + "." + attr;
            test = partition isOption opts;
          in
            if test.right == [] then filterOptionSets name (map delayIf test.wrong)
            else if tail test.right != [] then  throw "Multiple options for '${name}'."
            else { inherit name; } // (head test.right)
        ) opts
  