anchor.diff:    | Binary
     | HunterKiller
     | ABW
  +  | RecursiveBacktracker
     with
  -  static member All = [Binary; HunterKiller; ABW]
  +  static member All = [Binary; HunterKiller; ABW; RecursiveBacktracker]
     static member Render =
       function
       | Binary -> "Binary"
       | HunterKiller -> "Hunter-Killer"
       | ABW -> "Aldous-Broder/Wilson's"
  +    | RecursiveBacktracker -> "Recursive Backtracker"
     static member Parse str =
       Algorithm.All |> List.find (fun alg -> Algorithm.Render alg = str)
   
  
positive.code:     node <- node'
    maze
  
  let eventsFor (maze: Maze.data) n =
    let r = new Random()
    let table = [|
  
negative.code:        { model with revealed = Set.ofList revealed }, []
      | None -> model, []
    | SwitchAlgorithm(alg) ->
      { model with
          mazeGenerator =
            (match alg with
              | Binary -> binaryMaze
              | HunterKiller -> huntKill
              | ABW -> aldousBroderWilsons
              | RecursiveBacktracker -> recursiveBacktracker
            ) 22 10
          algorithm = alg
        },
        [fun d -> d Refresh]
  
  module Key =
    let left = KeyDetect 37
  