public void DownIsYesNeighbor()
        {
            //if they are neighbors then any numbers that are not within +/- 1 of each other must be removed
            //and they are neighbors in this case

            List <int> numsToRemove = AllowedValues
                                      .Where(x => GridPanelUnder != null)
                                      .Where(x => !GridPanelUnder.HasNeighborValueFor(x))
                                      .ToList();

            if (numsToRemove.Any())
            {
                numsToRemove.ForEach(removeSingleValue);
            }

            if (GridPanelUnder != null)
            {
                numsToRemove = GridPanelUnder.AllowedValues
                               .Where(x => !HasNeighborValueFor(x))
                               .ToList();

                if (numsToRemove.Any())
                {
                    numsToRemove.ForEach(GridPanelUnder.removeSingleValue);
                }
            }
        }
        private void downIsNotNeighbor()
        {
            if (GridPanelUnder != null && GridPanelUnder.AllowedValues.Count == 1 && AllowedValues.Count != 1)
            {
                RemoveNonNeighborValue(GridPanelUnder.AllowedValues.First());
                UpdateAllowedValuesLabel();
            }


            if (GridPanelUnder != null && AllowedValues.Count == 1 && GridPanelUnder.AllowedValues.Count != 1)
            {
                GridPanelUnder.RemoveNonNeighborValue(AllowedValues.First());
                GridPanelUnder.UpdateAllowedValuesLabel();
            }
        }