anchor.diff:       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. */
  +     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);
  
positive.code:       defnsByName' = byName "config" (module: value:
            [{ inherit (module) file; inherit value; }]
          ) configs;
      in
      (flip mapAttrs declsByName (name: decls:
        # We're descending into attribute ‘name’.
          let
            loc = prefix ++ [name];
            defns = defnsByName.${name} or [];
  
negative.code:         in
            if nrOptions == length decls then
              let opt = fixupOptionType loc (mergeOptionDecls loc decls);
              in {
                matchedOptions = evalOptionValue loc opt defns';
                unmatchedDefns = [];
              }
            else if nrOptions != 0 then
              let
                firstOption = findFirst (m: isOption m.options) "" decls;
  