A field of type `Player` stores a Player reference. Two such fields on a Game can refer to the same Player object.
Suppose `game.CurrentPlayer` and `game.LastPlayer` both refer to Jordan. The field names describe different roles, while their references currently lead to one object.
If the Game runs:
game.CurrentPlayer.NumberOfTurns++;then `game.LastPlayer.NumberOfTurns` also shows the increased value. Both paths reach the same Player field.
If Casey becomes the current player, the Game can change just one field:
game.CurrentPlayer = casey;`game.LastPlayer` can still reach Jordan. The Game now refers to two different Players.
The fact that two fields have different names does not prove they hold different objects. Their destinations determine whether they share an object.