anchor.diff:      static member isOccupied (fieldSpace : FieldSpace) =
           fieldSpace.IsOccupied
   
  +    static member isUnoccupied (fieldSpace : FieldSpace) =
  +        not fieldSpace.IsOccupied
  +
       // internal updaters
       
       static member updateCharacterOpt updater fieldSpace =
  
positive.code: type [<ReferenceEquality; NoComparison>] Chessboard =
      { FieldSpaces : Map<Vector2i, FieldSpace> }
  
      // NOTE: the following subset data can be optimized on demand by converting them from filters to storage caches, without interfering with the interface.
      
      member this.CharacterSpaces =
          Map.filter (fun _ (v : FieldSpace) -> v.ContainsCharacter) this.FieldSpaces
      
      member this.EnemySpaces =
          Map.filter (fun _ (v : FieldSpace) -> v.ContainsEnemy) this.FieldSpaces
  
      member this.PropSpaces =
          Map.filter (fun _ (v : FieldSpace) -> v.ContainsProp) this.FieldSpaces
      
      member this.PickupSpaces =
          Map.filter (fun _ (v : FieldSpace) -> v.ContainsPickup) this.FieldSpaces
  
      member this.OccupiedSpaces =
          Map.filter (fun _ (v : FieldSpace) -> v.IsOccupied) this.FieldSpaces |> Map.toKeyList
      
      member this.UnoccupiedSpaces =
          Map.filter (fun _ (v : FieldSpace) -> not v.IsOccupied) this.FieldSpaces |> Map.toKeyList
  
      member this.OpenDirections coordinates =
          List.filter (fun d -> List.exists (fun x -> x = (coordinates + (dtovc d))) this.UnoccupiedSpaces) [Upward; Rightward; Downward; Leftward]
  
      member this.Characters =
          Map.map (fun _ (v : FieldSpace) -> v.GetCharacter) this.CharacterSpaces
  
      member this.EnemyIndices =
          Map.toListBy (fun _ (v : FieldSpace) -> v.GetCharacterIndex) this.EnemySpaces
      
      member this.Pickups =
          Map.map (fun _ (v : FieldSpace) -> v.GetPickup) this.PickupSpaces
      
      member this.EnemyCount =
          this.EnemySpaces.Count
  
negative.code:         Chessboard.getCharacterAtCoordinates coordinates chessboard
      
      static member tryGetOccupantAtCoordinates coordinates chessboard =
          FieldSpace.tryGetOccupant chessboard.FieldSpaces.[coordinates]
      
      static member getPickup coordinates chessboard =
          chessboard.FieldSpaces.[coordinates].GetPickup
  