internal static bool MeetsPrerequisites(BlueprintArchetype archetype, UnitDescriptor unit, LevelUpState state)
        {
            bool?all = null;
            bool?any = null;

            foreach (var prerequisite in archetype.GetComponents <Prerequisite>())
            {
                var passed = prerequisite.Check(null, unit, state);
                if (prerequisite.Group == Prerequisite.GroupType.All)
                {
                    all = (!all.HasValue) ? passed : (all.Value && passed);
                }
                else
                {
                    any = (!any.HasValue) ? passed : (any.Value || passed);
                }
            }
            var result = (!all.HasValue || all.Value) && (!any.HasValue || any.Value);

            return(result);
        }