/// <summary>
        /// Returns a copy of an instance of PlayFieldModel
        /// </summary>
        /// <returns></returns>
        public PlayFieldModel clone(Guid guidOfClone)
        {
            Guid oldInstanceGuid = thisPlayFieldModelInstanceGuid.cloneGuid();
            //TODO Clone Deck

            List <PlayerModel> playersCloned          = cloneListPlayerModels(this.playerModels, this);
            List <Card>        topCardsPlayPileCloned = cloneListCards(topCardsOnPlaypile);
            Guid oldPlayerWhoseTurnItIsGuid           = guidOfPlayerWhosTurnItIs.cloneGuid();
            int  numberOfTurnsForPlayerRemaining      = this.numberOfTurnsRemainingForPlayerWhosTurnItIs;
            bool startOfATurnClone = startOfATurn.cloneBool();

            if (lastActionPlayed == null)
            {
                lastActionPlayed = new TurnActionModel(null, new Guid(), new Guid(), new Guid(), null, TurnActionTypes.gameStarted, false);
            }
            PlayFieldModel pfmC = new PlayFieldModel(oldInstanceGuid, guidOfClone, playersCloned, topCardsPlayPileCloned, oldPlayerWhoseTurnItIsGuid, playersAffectedByActionCardGuids.cloneListGuids(), lastActionPlayed.clone(), currentTurnActionModel.clone(), drawPile.clone(deck), playpile.clone(deck), numberOfTurnsForPlayerRemaining, startOfATurnClone, currentPhase, deck.cloneDeck());

            return(pfmC);
        }