anchor.diff:        defnsByName' = byName "config" (module: value:
             [{ inherit (module) file; inherit value; }]
           ) configs;
  -    in
  -    (flip mapAttrs declsByName (name: decls:
  -      # We're descending into attribute ‘name’.
  +
  +      resultsByName = flip mapAttrs declsByName (name: decls:
  +        # We're descending into attribute ‘name’.
           let
             loc = prefix ++ [name];
             defns = defnsByName.${name} or [];
  
positive.code:             in
                throw "The option `${showOption loc}' in `${firstOption._file}' is a prefix of options in `${firstNonOption._file}'."
            else
              mergeModules' loc decls defns
        ))
      // { _definedNames = map (m: { inherit (m) file; names = attrNames m.config; }) configs; };
  
    /* Merge multiple option declarations into a single declaration.  In
       general, there should be only one declaration of each option.
  
negative.code:      declarations in all modules, combining them into a single set.
       At the same time, for each option declaration, it will merge the
       corresponding option definitions in all machines, returning them
       in the ‘value’ attribute of each option.
  
       This returns a set like
         {
           # A recursive set of options along with their final values
           matchedOptions = {
             foo = { _type = "option"; value = "option value of foo"; ... };
             bar.baz = { _type = "option"; value = "option value of bar.baz"; ... };
             ...
           };
           # A list of definitions that weren't matched by any option
           unmatchedDefns = [
             { file = "file.nix"; prefix = [ "qux" ]; value = "qux"; }
             ...
           ];
         }
    */
    mergeModules = prefix: modules:
      mergeModules' prefix modules
        (concatMap (m: map (config: { file = m._file; inherit config; }) (pushDownProperties m.config)) modules);
  