anchor.diff:          else failwith "character placement failed; coordinates unavailable"
   
       static member addCharacter index coordinates (chessboard : Chessboard) =
  +    //    let chessboard = Chessboard.updateByCoordinates coordinates (FieldSpace.addCharacter index) chessboard
           Chessboard.placeCharacter index coordinates chessboard
   
  -    static member relocateCharacter index coordinates (chessboard : Chessboard) =
  -        Chessboard.placeCharacter index coordinates chessboard
  -    
       static member removeCharacter index _ chessboard =
  +    //    let coordinates = Chessboard.getCharacterCoordinates index chessboard
  +    //    let chessboard = Chessboard.updateByCoordinates coordinates FieldSpace.removeCharacter chessboard
           let characterCoordinates = Map.remove index chessboard.CharacterCoordinates
           Chessboard.updateCharacterCoordinates (constant characterCoordinates) chessboard
       
  +    static member relocateCharacter index coordinates (chessboard : Chessboard) =
  +    //    let oldCoordinates = Chessboard.getCharacterCoordinates index chessboard
  +    //    let chessboard = Chessboard.updateByCoordinates oldCoordinates FieldSpace.removeCharacter chessboard
  +    //    let chessboard = Chessboard.updateByCoordinates coordinates (FieldSpace.addCharacter index) chessboard
  +        Chessboard.placeCharacter index coordinates chessboard
  +    
       static member clearEnemies _ _ (chessboard : Chessboard) =
  +    //    let chessboard = Chessboard.updateByPredicate FieldSpace.containsEnemy FieldSpace.removeCharacter chessboard
           Chessboard.updateCharacterCoordinates (constant chessboard.PlayerCoordinates) chessboard
       
       static member addMove index move chessboard =
  
positive.code:         Map.add coordinates (updater passableCoordinates.[coordinates]) passableCoordinates
  
      static member updateByPredicateInternal predicate updater (passableCoordinates : Map<Vector2i, FieldSpace>) =
          Map.map (fun _ v -> if predicate v then updater v else v ) passableCoordinates
      
      static member updateByCoordinates coordinates updater chessboard =
          Chessboard.updatePassableCoordinates (Chessboard.updateByCoordinatesInternal coordinates updater) chessboard
  
negative.code:     
      static member clearPickups _ _ chessboard =
          Chessboard.updateByPredicate FieldSpace.containsPickup FieldSpace.removePickup chessboard
      
      static member getCharacterCoordinates index chessboard =
          Map.findKey (fun _ v -> FieldSpace.containsSpecifiedCharacter index v) chessboard.PassableCoordinates
      
      // used for both adding and relocating
      static member placeCharacter index coordinates (chessboard : Chessboard) =
  