internal PreviousQuestRequirement(Quest quest) {
                const int QuestCount = 3;

                this.Type = (PrerequisiteQuestsRequirementType)quest.AsInt32("PreviousQuestJoin");

                var contents = new List<Quest>();
                for (var i = 0; i < QuestCount; ++i) {
                    var c = quest.As<Quest>("PreviousQuest", i);

                    if (c != null && c.Key != 0)
                        contents.Add(c);
                }
                this.PreviousQuests = contents;
            }
            internal PreviousQuestRequirement(Quest quest)
            {
                const int QuestCount = 3;

                this.Type = (PrerequisiteQuestsRequirementType)quest.AsInt32("PreviousQuestJoin");

                var contents = new List <Quest>();

                for (var i = 0; i < QuestCount; ++i)
                {
                    var c = quest.As <Quest>("PreviousQuest", i);

                    if (c != null && c.Key != 0)
                    {
                        contents.Add(c);
                    }
                }
                this.PreviousQuests = contents;
            }
            internal InstanceContentRequirement(Quest quest)
            {
                const int QuestCount = 3;

                this.Type = (PrerequisiteQuestsRequirementType)quest.AsInt32("InstanceContentJoin");

                var contents = new List <InstanceContent>();

                for (var i = 0; i < QuestCount; ++i)
                {
                    var c = quest.As <InstanceContent>("InstanceContent", i);

                    if (c.Key != 0)
                    {
                        contents.Add(c);
                    }
                }
                this.InstanceContents = contents;
            }
 internal PrerequisiteQuestsRequirement(PrerequisiteQuestsRequirementType type, IEnumerable<Quest> quests)
 {
     this.Type = type;
     this.Quests = quests;
 }