anchor.diff:          Map.exists (fun k _ -> k = index) chessboard.CharacterCoordinates
       
       static member pickupAtCoordinates coordinates chessboard =
  -        match chessboard.PassableCoordinates.[coordinates] with
  -        | Some _ -> true
  -        | None -> false
  -    
  -    static member updateCoordinatesValue newValue coordinates chessboard =
  -        let passableCoordinates = Map.add coordinates newValue chessboard.PassableCoordinates
  +        chessboard.PassableCoordinates.[coordinates].ContainsPickup
  +    
  +    static member updateCoordinatesValue updater coordinates chessboard =
  +        let passableCoordinates = Map.add coordinates (updater chessboard.PassableCoordinates.[coordinates]) chessboard.PassableCoordinates
           Chessboard.updatePassableCoordinates (constant passableCoordinates) chessboard
       
       static member clearPickups _ _ chessboard =
  -        let passableCoordinates = Map.map (fun _ _ -> None) chessboard.PassableCoordinates
  +        let passableCoordinates = Map.map (fun _ v -> FieldSpace.removePickup v) chessboard.PassableCoordinates
           Chessboard.updatePassableCoordinates (constant passableCoordinates) chessboard
       
       // used for both adding and relocating
  
positive.code:         Chessboard.addMove PlayerIndex move chessboard
      
      static member setPassableCoordinates _ fieldMap chessboard =
          let passableCoordinates = fieldMap.FieldTiles |> Map.filter (fun _ fieldTile -> fieldTile.TileType = Passable) |> Map.map (fun _ _ -> None)
          Chessboard.updatePassableCoordinates (constant passableCoordinates) chessboard                    
  
  type [<ReferenceEquality; NoComparison>] Gameplay =
  
negative.code:         Map.filter (fun (k : CharacterIndex) _ -> not k.IsEnemy) this.CharacterCoordinates
      
      member this.PickupItems =
          Map.filter (fun _ (v : FieldSpace) -> v.ContainsPickup) this.PassableCoordinates
  
      member this.EnemyCount =
          this.EnemyCoordinates.Count
  