anchor.diff:        else "x is probably a path `${substring 0 50 (toString x)}'";
   
     # trace the arguments passed to function and its result 
  +  # maybe rewrite these functions in a traceCallXml like style. Then one function is enough
     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));
  
positive.code:       then [ { inherit name; expected = test.expected; result = test.expr; } ]
        else [] ) tests));
    
  }
  
negative.code:   
    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;
  