anchor.diff:      let f = attrPath:
         zipAttrsWith (n: values:
           let here = attrPath ++ [n]; in
  -        if tail values == []
  -        || pred here (head (tail values)) (head values) then
  +        if length values == 1
  +        || pred here (elemAt values 1) (head values) then
             head values
           else
             f here values
  
positive.code:        }
  
       */
    recursiveUpdate = lhs: rhs:
      recursiveUpdateUntil (path: lhs: rhs:
        !(isAttrs lhs && isAttrs rhs)
      ) lhs rhs;
  
    /* Returns true if the pattern is contained in the set. False otherwise.
  
  
negative.code:       value = f name (catAttrs name sets);
      }) names);
  
    /* Implementation note: Common names appear multiple times in the list of
       names, hopefully this does not affect the system because the maximal
       laziness avoid computing twice the same expression and listToAttrs does
       not care about duplicated attribute names.
  