private static BoardLocation SafeCreate(int x, int y)
        {
            if (ChessGame.OutOfBounds(y))
            {
                return(null);
            }
            if (ChessGame.OutOfBounds(x))
            {
                return(null);
            }

            return(BoardLocation.At(x, y));
        }
 public static BoardLocation MoveRight(this BoardLocation location, Colours colour, int squares = 1)
 => SafeCreate(location.X + (ChessGame.DirectionModifierFor(colour) * squares), location.Y);
 public static BoardLocation MoveForward(this BoardLocation location, Colours colour, int squares = 1)
 => SafeCreate(location.X, location.Y + ChessGame.DirectionModifierFor(colour) * squares);