anchor.diff:      in
         foldl (opt: f: f opt) init [
           # default settings
  -        mergeFromType
  +        functionsFromType
   
           # user settings
           addDeclaration
  
positive.code:         apply = lib.id;
        };
  
        mergeFromType = opt:
          if decl ? type && decl.type ? merge then
            opt // { merge = decl.type.merge; }
          else
            opt;
  
        addDeclaration = opt: opt // decl;
  
        ensureMergeInputType = opt:
          if decl ? type then
            opt // {
              merge = list:
                if all decl.type.check list then
                  opt.merge list
                else
                  throw "One of the definitions has a bad type.";
  
negative.code:           in
              opt // {
                merge = list:
                  opt.type.iter
                    (path: opts:
                      (lib.fix
                        (fixableMergeFun (recurseInto path) (optionConfig opts))
  