private protected virtual void ShuffleCore(Func <ImmutableArray <T>, IEnumerable <T> > shuffleFunc) => _logic.Shuffle(shuffleFunc, _noOpTransformer);
private protected sealed override void ShuffleCore(Func <ImmutableArray <T>, IEnumerable <T> > shuffleFunc) => _logic.Shuffle(items => shuffleFunc(items)?.Select(i => Wrap(i)), _truthyUnwrapper);