anchor.diff:    # this can help debug your code as well - designed to not produce thousands of lines
     traceShowVal = x: trace (showVal x) x;
     traceShowValMarked = str: x: trace (str + showVal x) x;
  -  attrNamesToStr = a: lib.concatStringsSep "; " (map (x: "${x}=") (attrNames a));
  +
  +  attrNamesToStr = a:
  +    trace ( "Warning: `attrNamesToStr` is deprecated "
  +          + "and will be removed in the next release." )
  +    (lib.concatStringsSep "; " (map (x: "${x}=") (attrNames a)));
  +
     showVal = with lib;
       trace ( "Warning: `showVal` is deprecated "
             + "and will be removed in the next release, "
  
positive.code:         { allowPrettyValues = true; }
          (modify x);
      in go);
  
    # trace the arguments passed to function and its result
    # maybe rewrite these functions in a traceCallXml like style. Then one function is enough
  
negative.code: 
    traceValFn = f: x: trace (f x) x;
    traceVal = traceValFn id;
    # strict trace functions (traced structure is fully evaluated and printed)
  
    /* `builtins.trace`, but the value is `builtins.deepSeq`ed first. */
  