anchor.diff:    */
     mapAttrsRecursiveCond = cond: f: set:
       let
  -      recurse = path: set:
  +      recurse = path:
           let
             g =
               name: value:
               if isAttrs value && cond value
                 then recurse (path ++ [name]) value
                 else f (path ++ [name]) value;
  -        in mapAttrs g set;
  +        in mapAttrs g;
       in recurse [] set;
   
   
  
positive.code:        foldAttrs (n: a: [n] ++ a) [] [{ a = 2; } { a = 3; }]
         => { a = [ 2 3 ]; }
    */
    foldAttrs = op: nul: list_of_attrs:
      foldr (n: a:
          foldr (name: o:
            o // { ${name} = op n.${name} (a.${name} or nul); }
          ) a (attrNames n)
      ) {} list_of_attrs;
  
  
    /* Recursively collect sets that verify a given predicate named `pred'
  
negative.code: 
  let
    inherit (builtins) head tail length;
    inherit (lib.trivial) id;
    inherit (lib.strings) concatStringsSep sanitizeDerivationName;
    inherit (lib.lists) foldr foldl' concatMap concatLists elemAt all;
  in
  
  rec {
  