anchor.diff:        forests = HashSet<Location>()
         cameFrom = Dictionary<Location, Location>()
         costSoFar = Dictionary<Location, int>()
  +      path = []
       }
   
     // Make "diagram 4" from main article
  
positive.code:   ys |> List.iter (fun y ->
      xs |> List.iter (fun x ->
        let location = { x = x; y = y; }
        let hasValue, outLocation = graph.cameFrom.TryGetValue(location)
        let pointer = if hasValue = false then location else outLocation
        if location = start                      then Console.Write("s ")
        else if location = goal                  then Console.Write("g ")
        else if (graph.walls.Contains(location)) then Console.Write("##")
        else if (pointer.x = x + 1)              then Console.Write("→ ")
        else if (pointer.x = x - 1)              then Console.Write("← ")
  
negative.code:   graph.cameFrom.[start] <- start
    graph.costSoFar.[start] <- 0
  
    let mutable break' = false
    while frontier.Length > 0 && break' <> true do
      let current, _ = dequeue ()
  
      if current = goal then break' <- true
      if break' <> true then
        neighbors graph current
        |> List.iter (fun neighbor ->
          let newCost = graph.costSoFar.[current] + cost graph current neighbor
  