public FireworkPile Clone() { var newFirework = new FireworkPile(this.Provider); foreach (var card in Cards) { if (!newFirework.AddCard(card)) { throw new InvalidOperationException(); } } return(newFirework); }