private IStatBuilder AdditionalLevels(string identityInfix, IGemTagBuilder gemTag, Func <BuildParameters, string, string> buildIdentitySuffix)
        {
            var coreBuilder = new CoreStatBuilderFromCoreBuilder <string>(
                CoreBuilder.Proxy(gemTag, (ps, b) => buildIdentitySuffix(ps, b.Build(ps))),
                (e, t) => StatFactory.FromIdentity($"Gem.AdditionalLevels{identityInfix}.{t}", e, typeof(int)));

            return(new StatBuilder(StatFactory, coreBuilder));
        }
 private IStatBuilder AdditionalLevels(string identityInfix, IGemTagBuilder gemTag) =>
 AdditionalLevels(identityInfix, gemTag, (_, i) => i);
 public IStatBuilder AdditionalLevelsForModifierSourceItemSlot(IGemTagBuilder gemTag) =>
 AdditionalLevels("", gemTag, (ps, t) => $"{t}.{GetItemSlot(ps.ModifierSource)}");
 public IStatBuilder AdditionalActiveSpellLevels(IGemTagBuilder gemTag) => AdditionalLevels(".ActiveSkill.spell", gemTag);