internal void Commit(StatePayload payload)
        {
            if (!this.Store.ContainsKey(payload.FarmerId) || this.Store[payload.FarmerId] == null)
            {
                this.Store[payload.FarmerId] = new Dictionary <string, StatePayload>();
            }

            this.Store[payload.FarmerId][payload.QuestName] = payload;
            this.Monitor.Log($"Payload `{payload.QuestName}/{payload.FarmerId}` type `{payload.StateData.Type}` commited to store");
        }
        public void Verify(long farmerUid, IEnumerable <CustomQuest> customQuests)
        {
            var payloadList = this.GetPayloadList(farmerUid);

            foreach (var customQuest in customQuests)
            {
                StatePayload payload = payloadList[customQuest.Name];
                if (customQuest is IStateRestorable restorable && !restorable.VerifyState(payload))
                {
                    this.Monitor.Log($"State for quest `{customQuest.Name}` for farmer UID {farmerUid} mismatch! " +
                                     $"Did you call Sync() in your CustomQuest type?", LogLevel.Warn);
                }
            }
        }