private void ApplyGroupingToAdjacents(OccupiedGridSquare square, IEnumerable <OccupiedGridSquare> usedSquares)
        {
            var adjacents = usedSquares.Where(other => other.Group == 0 && square.IsAdjacentTo(other))
                            .ToList();

            adjacents.ForEach(sq => sq.Group = square.Group);
            adjacents.ForEach(sq => ApplyGroupingToAdjacents(sq, usedSquares));
        }
            public bool IsAdjacentTo(OccupiedGridSquare square)
            {
                var rowDistance = Math.Abs(square.Row - Row);

                if (rowDistance > 1)
                {
                    return(false);
                }

                var columnDistance = Math.Abs(square.Column - Column);

                if (columnDistance > 1)
                {
                    return(false);
                }

                return(rowDistance + columnDistance == 1);
            }