anchor.diff:    
     traceVal = if builtins ? trace then x: (builtins.trace x x) else x: x;
     traceXMLVal = if builtins ? trace then x: (builtins.trace (builtins.toXML x) x) else x: x;
  -
  +  traceXMLValMarked = str: if builtins ? trace then x: (builtins.trace ( str + builtins.toXML x) x) else x: x;
     
     # this can help debug your code as well - designed to not produce thousands of lines
     traceShowVal = x : trace (showVal x) x;
  
positive.code:       else "x is probably a path `${substring 0 50 (toString x)}'";
  
    # trace the arguments passed to function and its result 
    traceCall  = n : f : a : let t = n2 : x : traceShowValMarked "${n} ${n2}:" x; in t "result" (f (t "arg 1" a));
    traceCall2 = n : f : a : b : let t = n2 : x : traceShowValMarked "${n} ${n2}:" x; in t "result" (f (t "arg 1" a) (t "arg 2" b));
    traceCall3 = n : f : a : b : c : let t = n2 : x : traceShowValMarked "${n} ${n2}:" x; in t "result" (f (t "arg 1" a) (t "arg 2" b) (t "arg 3" c));
  
negative.code: let lib = import ./default.nix;
  
  inherit (builtins) trace attrNamesToStr isAttrs isFunction isList isInt
          isString isBool head substring attrNames;
  
  inherit (lib) all id mapAttrsFlatten;
  
  in
  
  