BoundStat
Pairs a StatKey with the live Stat that produces results for that slot. The combination is what a StatGroup / ListStats actually holds; the key for typed lookup, the stat for accumulation. Carries three type parameters so the key's R / S / K match without erasure shenanigans at the call site:
S narrows the stat's modality (com.eignex.kumulant.core.SeriesStat, com.eignex.kumulant.core.PairedStat, etc.) so a group can refuse to accept mismatched modalities at construction.
K is the key's own type (StatKey / GroupStatKey).
Most callers don't construct BoundStat by hand; the StatSchema declarators (StatSchema.series, StatSchema.paired, etc.) produce them. Direct construction is useful when bypassing the schema for ad-hoc groups.
BoundStat
key
Typed key under which stat's result lives in the GroupResult.