<commit_before>﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;

namespace BoringCardLib {
	public sealed class ImmutableCardGroup : IEnumerable<Card> {
		private CardGroup mCards = null;

		public int Count { get { return mCards.Count; } }
		public Card Top { get { return mCards.Top; } }
		public Card Bottom { get { return mCards.Bottom; } }

		public ImmutableCardGroup(IEnumerable<Card> cards) : this(cards.ToArray()) { }
		public ImmutableCardGroup(params Card[] cards) {
			if (cards == null) throw new ArgumentNullException(nameof(cards));
			if (cards.Any(c => c == null)) throw new ArgumentException("Must have no nulls", nameof(cards));
			mCards = new CardGroup(cards);
		}

		public CardGroup Shuffle(int times = 1) {
			return Shuffle(new DefaultRandomSource(), times: times);
		}

		public CardGroup Shuffle(IRandomSource sampler, int times = 1) {
			if (sampler == null) throw new ArgumentNullException(nameof(sampler));
			if (times <= 0) throw new ArgumentException("Must be > 0", nameof(times));
			return Shuffle(sampler, times: times);
		}

		public IEnumerable<CardGroup> Distribute(int numberOfPiles, DistributionPolicy distributionPolicy = DistributionPolicy.Alternating, RemainderPolicy remainderPolicy = RemainderPolicy.Distribute) {
			return mCards.Distribute(numberOfPiles, distributionPolicy: distributionPolicy, remainderPolicy: remainderPolicy);
		}

		public SplitResult Split() {
			return mCards.Split();
		}

		public SplitResult Split(int splitPoint) {
			return mCards.Split(splitPoint);
		}<commit_msg>Fixing a recursion issue<commit_after>﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;

namespace BoringCardLib {
	public sealed class ImmutableCardGroup : IEnumerable<Card> {
		private CardGroup mCards = null;

		public int Count { get { return mCards.Count; } }
		public Card Top { get { return mCards.Top; } }
		public Card Bottom { get { return mCards.Bottom; } }

		public ImmutableCardGroup(IEnumerable<Card> cards) : this(cards.ToArray()) { }
		public ImmutableCardGroup(params Card[] cards) {
			if (cards == null) throw new ArgumentNullException(nameof(cards));
			if (cards.Any(c => c == null)) throw new ArgumentException("Must have no nulls", nameof(cards));
			mCards = new CardGroup(cards);
		}

		public CardGroup Shuffle(int times = 1) {
			return Shuffle(new DefaultRandomSource(), times: times);
		}

		public CardGroup Shuffle(IRandomSource sampler, int times = 1) {
			if (sampler == null) throw new ArgumentNullException(nameof(sampler));
			if (times <= 0) throw new ArgumentException("Must be > 0", nameof(times));
			return mCards.Shuffle(sampler, times: times);
		}

		public IEnumerable<CardGroup> Distribute(int numberOfPiles, DistributionPolicy distributionPolicy = DistributionPolicy.Alternating, RemainderPolicy remainderPolicy = RemainderPolicy.Distribute) {
			return mCards.Distribute(numberOfPiles, distributionPolicy: distributionPolicy, remainderPolicy: remainderPolicy);
		}

		public SplitResult Split() {
			return mCards.Split();
		}

		public SplitResult Split(int splitPoint) {
			return mCards.Split(splitPoint);
		}
{'fraction_non_alphanumeric': 0.10438871473354232, 'fraction_numerical': 0.0025078369905956114, 'mean_word_length': 5.172147001934236, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 13, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5545252', 'n_tokens_mistral': 1028, 'n_tokens_neox': 919, 'n_words': 259}