anchor.diff:  
   (* Hill Climbing *)
   let hillClimbing<'a> (levels: int): SearchAlgorithm<'a> = fun (reporter: Reporter<'a>)  (e: 'a)  (children: 'a -> 'a List) (costModel: 'a -> double) -> 
  +  reporter.init (sprintf "Hill Climbing started with %d levels" levels)
     let range = [for i = 1 to levels do yield i]
     let mutable currentBest = e
     let mutable currentBestCost = costModel e
  
positive.code:       file.Close()
    
    let completeReporter<'a> (printer: 'a -> string) (logger: Logger) =
      { init = fun () -> ();
        step = fun stp ruleIdx (node, cost) -> logger (sprintf "Step %d, rule %d: %s" stp ruleIdx (nodeCostToString printer node cost))
        finish = fun allPrograms (node, cost) -> logger (sprintf "examined programs: %d\nBest: %s" (List.length allPrograms) (nodeCostToString printer node cost))
      }
  
negative.code: 
  (* Random Walk *)
  let randomWalk<'a> (levels: int): SearchAlgorithm<'a> = fun (reporter: Reporter<'a>)  (e: 'a)  (children: 'a -> 'a List) (costModel: 'a -> double) -> 
    reporter.init (sprintf "Random Walk started with %d levels" levels)
    let range = [for i = 1 to levels do yield i]
    let rand = new System.Random()
    let revertedResult = 
  