//this method sets the initial state of your inventory
        public static InventoryState SetState(Product item, int amountOnHand, bool allowBackOrder, DateTime dateAvailable)
        {
            InventoryState result = null;

            if (item.IsOnPreOrder()) {
                result=new OnPreOrder(item);
            } else if (item.IsUnavailable()) {
                result = new Unavailable(item);
            } else if (item.IsOnBackOrder()) {
                result = new OnBackOrder(item);
            } else {
             result = new InStock(item);
            }

            return result;
        }
        //this method sets the initial state of your inventory
        public static InventoryState SetState(Product item, int amountOnHand, bool allowBackOrder, DateTime dateAvailable)
        {
            InventoryState result = null;

            if (item.IsOnPreOrder())
            {
                result = new OnPreOrder(item);
            }
            else if (item.IsUnavailable())
            {
                result = new Unavailable(item);
            }
            else if (item.IsOnBackOrder())
            {
                result = new OnBackOrder(item);
            }
            else
            {
                result = new InStock(item);
            }

            return(result);
        }