anchor.diff:         => true
      */
     matchAttrs = pattern: attrs: assert isAttrs pattern;
  -    foldr and true (attrValues (zipAttrsWithNames (attrNames pattern) (n: values:
  -      let pat = head values; val = head (tail values); in
  +    all id (attrValues (zipAttrsWithNames (attrNames pattern) (n: values:
  +      let pat = head values; val = elemAt values 1; in
         if length values == 1 then false
         else if isAttrs pat then isAttrs val && matchAttrs pat val
         else pat == val
  
positive.code: 
  let
    inherit (builtins) head tail length;
    inherit (lib.trivial) and;
    inherit (lib.strings) concatStringsSep sanitizeDerivationName;
    inherit (lib.lists) foldr foldl' concatMap concatLists elemAt;
  in
  
  rec {
  
negative.code:   */
    mapAttrsRecursiveCond = cond: f: set:
      let
        recurse = path:
          let
            g =
              name: value:
              if isAttrs value && cond value
                then recurse (path ++ [name]) value
                else f (path ++ [name]) value;
          in mapAttrs g;
      in recurse [] set;
  
  
  