anchor.diff:          
           let randomChild = childNodes.[index]
           let randomChildCost = costModel randomChild
  -        reporter.step cur index (randomChild, randomChildCost)
  +        reporter.step cur index (childNodes.Length) (randomChild, randomChildCost)
           (randomChild, randomChildCost) :: acc) [e, costModel e] range
     //if debug then
     //  printfn "random expressions:\n%s\n" (nodesListToString printer (List.rev revertedResult))
  
positive.code:           raise (CurrentListReturn (acc |> List.map snd))
          else 
            let (index, bestChild, bestChildCost) = childNodes |> List.mapi (fun idx n -> idx, n, costModel n) |> List.minBy (fun (_,_,c) -> c)
            reporter.step cur index (bestChild, bestChildCost)
            if(bestChildCost < currentBestCost) then
              currentBestCost <- bestChildCost
              currentBest <- bestChild
  
negative.code:   
    let completeReporter<'a> (printer: 'a -> string) (logger: Logger) =
      { init = fun msg -> logger msg;
        step = fun stp ruleIdx rulesSize (node, cost) -> logger (sprintf "Step %d, rule %d out of %d: %s" stp ruleIdx rulesSize (nodeCostToString printer node cost))
        finish = fun allPrograms (node, cost) -> logger (sprintf "examined programs: %d\nBest: %s" (List.length allPrograms) (nodeCostToString printer node cost))
      }
  
  