public async Task <IActionResult> UpdateMenuItem(MenuItem menuItem)
        {
            var expr = from updateMenuItem in RestaurantDomain.UpdateAndPersistMenuItem(menuItem)
                       let item = (updateMenuItem as MenuItemUpdated)?.MenuItem
                                  select updateMenuItem;

            var result = await interpreter.Interpret(expr, Unit.Default);

            return(await result.MatchAsync <IActionResult>(
                       async updated =>
            {
                return (IActionResult)Ok(updated.MenuItem);
            },
                       async notUpdated =>
            {
                return BadRequest();
            }
                       ));
        }