public bool IsItemMissingPrior(Item item)
    {
        if (item == null)
        {
            return(false);
        }

        return
            (item.Value - Value > 1 ||
             (SubItem == null && item.SubItem != null && item.SubItem.Value > 1) ||            //edge case
             (SubItem != null && SubItem.IsItemMissingPrior(item.SubItem)));
    }