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))); }