protected virtual List <Position> GetAmbiguities(Move move, Piece movingPiece) { if (movingPiece == null) { return(new List <Position>()); } List <Position> ambiguities = new List <Position>(); foreach (File f in Enum.GetValues(typeof(File))) { if (f == File.None) { continue; } for (int r = 1; r <= 8; r++) { Position pos = new Position(f, r); if (!move.OriginalPosition.Equals(pos)) { Piece p = GetPieceAt(f, r); if (p != null && p.Equals(movingPiece) && p.IsValidMove(new Move(pos, move.NewPosition, move.Player), this)) { ambiguities.Add(pos); } } } } return(ambiguities); }