anchor.diff:        # call configuration "files" with one of the existing convention.
         optionSet = config: configFun:
           if __isFunction configFun then
  -          let result = configFun { inherit pkgs config; }; in
  -        # {pkgs, config, ...}: {..}
  +          let result = configFun { inherit pkgs config merge; }; in
  +        # {pkgs, config, merge, ...}: {..}
             if builtins.isAttrs result then result
           # pkgs: config: {..}
  -          else configFun pkgs config
  +          else builtins.trace "obsolete:" (configFun {} {})
           # {..}
           else configFun;
   
  
positive.code:   innerModifySumArgs = f: x: a: b: if b == null then (f a b) // x else 
  	innerModifySumArgs f x (a // b);
    modifySumArgs = f: x: innerModifySumArgs f x {};
  
    debugVal = if builtins ? trace then x: (builtins.trace x x) else x: x;
    debugXMLVal = if builtins ? trace then x: (builtins.trace (builtins.toXML x) x) else x: x;
  
negative.code:     else if all __isAttrs list then mergeAttrs list
      else if all (x: true == x || false == x) list then fold logicalOR false list
      else if all (x: x == toString x) list then concatStrings list
      else throw "Cannot merge values.";
  
    mergeTypedOption = typeName: predicate: merge: name: list:
      if all predicate list then merge list
      else throw "Expect a ${typeName}.";
  
    mergeEnableOption = mergeTypedOption "boolean"
      (x: true == x || false == x) (fold logicalOR false);
  