public override void HandleBidDone(Seats source, Bid bid)
 {
     if (bid == null)
     {
         throw new ArgumentNullException("bid");
     }
     Log.Trace(4, "{2}.BoardResultRecorder.HandleBidDone: {0} bid {1}", source, bid.ToXML(), this.Owner);
     if (!bid.Hint)
     {
         this.theAuction.Record(bid.Clone());
         if (this.theAuction.Ended)
         {
             this.thePlay = new PlaySequence(this.theAuction.FinalContract, 13);
         }
     }
 }
        public PlaySequence Clone()
        {
            PlaySequence n = (PlaySequence)MemberwiseClone();

            n.play = new Collection <PlayRecord>();
            for (int i = 0; i <= lastPlay; i++)
            {
                n.play.Add(play[i]);
            }

            n.finalContract = this.finalContract.Clone();
            n.finalContract.tricksForDefense++;
            if (n.finalContract.tricksForDefense == this.finalContract.tricksForDefense)
            {
                throw new FatalBridgeException("PlaySequence.Clone: finalContract");
            }
            n.finalContract.tricksForDefense--;
            return(n);
        }