anchor.diff:        else if isString x then "x is a string `${substring 0 50 x}...'"
         else "x is probably a path `${substring 0 50 (toString x)}...'";
   
  -  # trace the arguments passed to function and its result 
  +  # 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));
  
positive.code: 
        then [ { inherit name; expected = test.expected; result = test.expr; } ]
        else [] ) tests));
    
    # create a test assuming that list elements are true
    # usage: { testX = allTrue [ true ]; }
    testAllTrue = expr : { inherit expr; expected = map (x: true) expr; };
  
negative.code:       let nr = a;
        in (str: expr:
            if isFunction expr then
              (arg:
                traceCallXml (builtins.add 1 nr) "${str}\n arg ${builtins.toString nr} is \n ${builtins.toXML (strict arg)}" (expr arg)
              )
            else
              let r = strict expr;
              in builtins.trace "${str}\n result:\n${builtins.toXML r}" r
        );
  