private bool Validate()
        {
            ValidationErrorMessage = "";
            if (Bundle.SupportsOnlySquareBoards && !SelectedGameBoardSize.IsSquare)
            {
                ValidationErrorMessage = Localizer.Validation_YouMustSelectASquareBoard;
                return(false);
            }
            if (SelectedGameBoardSize.Width < 2 || SelectedGameBoardSize.Height < 2)
            {
                ValidationErrorMessage = Localizer.Validation_YouMustHave2x2OrGreater;
                return(false);
            }
            if (SelectedGameBoardSize.Width > 52 || SelectedGameBoardSize.Height > 52)
            {
                ValidationErrorMessage = Localizer.Validation_BoardTooExtreme;
                return(false);
            }
            if (Handicap != 0)
            {
                if (SelectedGameBoardSize.IsSquare)
                {
                    if (SelectedGameBoardSize.Width != 9 &&
                        SelectedGameBoardSize.Width != 13 &&
                        SelectedGameBoardSize.Width != 19)
                    {
                        ValidationErrorMessage = LocalizedStrings.Validation_ImproperHandicapForSize;
                        return(false);
                    }
                }
                else
                {
                    ValidationErrorMessage = LocalizedStrings.Validation_ImproperHandicapForSize;
                    return(false);
                }
            }
            float compensation;

            if (float.TryParse(CompensationString, NumberStyles.Any, CultureInfo.InvariantCulture, out compensation))
            {
                float fractionalpart = compensation - (int)compensation;
                // ReSharper disable CompareOfFloatsByEqualityOperator
                if (fractionalpart != 0 && fractionalpart != 0.5f)
                {
                    ValidationErrorMessage = Localizer.Validation_YouMustHaveHalfInteger;
                    return(false);
                }
                // ReSharper restore CompareOfFloatsByEqualityOperator
                if (Bundle.IsKgs)
                {
                    if (compensation < -100 || compensation > 100)
                    {
                        ValidationErrorMessage = Localizer.Validation_YouMustHaveSmallerKomi;
                        return(false);
                    }
                }
                if (compensation < -500 || compensation > 500)
                {
                    ValidationErrorMessage = Localizer.Validation_KomiTooExtreme;
                    return(false);
                }
            }
            else
            {
                ValidationErrorMessage = Localizer.Validation_YouMustHaveHalfInteger;
                return(false);
            }
            string errorMessage = "Error loading AI information."; // <-- Should never display.

            if (!BlackPlayerSettings.Validate(this, ref errorMessage))
            {
                ValidationErrorMessage = errorMessage;
                return(false);
            }
            if (!WhitePlayerSettings.Validate(this, ref errorMessage))
            {
                ValidationErrorMessage = errorMessage;
                return(false);
            }
            string timeErrorMessage = "Error parsing time control settings."; // <-- Should never display.

            if (!TimeControl.Validate(ref timeErrorMessage))
            {
                ValidationErrorMessage = timeErrorMessage;
                return(false);
            }
            if (Bundle.IsIgs)
            {
                if (SelectedGameBoardSize.Width < 5)
                {
                    ValidationErrorMessage = Localizer.Validation_YouMustHave5x5OrGreater;
                    return(false);
                }
                if (SelectedGameBoardSize.Width > 19)
                {
                    ValidationErrorMessage = Localizer.Validation_YouMustHave19x19OrSmaller;
                    return(false);
                }
                if (SelectedColor == StoneColor.None)
                {
                    // This should never happen.
                    ValidationErrorMessage = Localizer.Validation_NigiriIsForbidden;
                    return(false);
                }
            }
            if (Bundle.IsKgs)
            {
                if (SelectedGameBoardSize.Width > 38)
                {
                    ValidationErrorMessage = Localizer.Validation_YouMustHave38x38OrSmaller;
                    return(false);
                }
            }
            return(true);
        }