anchor.diff:            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"
  
positive.code: 
  [<Test>]
  let testPositionToMoves () =
    let trainingModule = "training_programs"
    let methods = compiler.getMethodsOfModule trainingModule
    let exp1 = 
      <@ 
        fun a -> 
  
negative.code: type ProgramMoves = SubExpr<Move list>
  
  type ProgramExternalState = 
    (* Set of Applicable Rules to the Current Position *)
    RuleInfo Set * 
    (* Current Depth *)
    int 
  