public ShoppingCart <TItem> Pay(decimal amount) { var newState = new PaidForState(Items, amount); return(FromState(newState)); }
public static ShoppingCart <TItem> FromState(PaidForState state) { return(new ShoppingCart <TItem>(Tag.PaidFor, state)); }