anchor.diff:  
   [<Test>]
   let testPositionToMoves () =
  -  let trainingModule = "training_programs"
  -  let methods = compiler.getMethodsOfModule trainingModule
     let exp1 = 
       <@ 
         fun a -> 
  
positive.code:           move :: (rcr exp childPos)
    rcr e zeroMetaData
  
  let stateToMoves ((e, pos): ProgramState): ProgramMoves = 
    e, positionToMoves e pos
  
  let stateToExternal (rs: Rule list) ((e, pos) as state: ProgramState) : ProgramExternalState = 
    let rules = examineAllRulesPositioned rs e |> List.filter (fun r -> (fst r) = pos) |> List.map (fun i -> snd (snd i)) |> Set.ofList
    let currentDepth = snd (stateToMoves state) |> List.length
    rules, currentDepth
  
  
negative.code:           b
      @>
    Assert.AreEqual(positionToMoves exp2 0, [])
  
  [<Test>]
  let testPositionToSubexpr () =
    let exp1 = 
      <@ 
        fun a -> 
          42. + 43.
      @>
    let areEqual e1 e2 =
      Assert.AreEqual(e1, e2, sprintf "Expected: %A\nActual: %A" e2 e1)
    areEqual (positionToSubexpr exp1 0) exp1
    areEqual (positionToSubexpr exp1 1) <@ 42. + 43. @>
    areEqual (positionToSubexpr exp1 2) <@ 42. @>
    areEqual (positionToSubexpr exp1 3) <@ 43. @>
  
  let training_generator(): unit = 
    let outputFile = "../../../outputs/training_generated.fs"
  