<commit_before>package org.zu.ardulink.util;

import java.util.Iterator;

public final class Joiner {

	private final String separator;

	private Joiner(String separator) {
		this.separator = separator;
	}

	public static Joiner on(String separator) {
		return new Joiner(separator);
	}

	public String join(Iterable<Object> values) {
		Iterator<Object> iterator = values.iterator();
		if (!iterator.hasNext()) {
			return "";
		}
		StringBuilder sb = new StringBuilder().append(iterator.next());
		while (iterator.hasNext()) {
			sb = sb.append(separator).append(iterator.next());
		}
		return sb.toString();
	}

}<commit_msg>generic type fixed<commit_after>package org.zu.ardulink.util;

import java.util.Iterator;

public final class Joiner {

	private final String separator;

	private Joiner(String separator) {
		this.separator = separator;
	}

	public static Joiner on(String separator) {
		return new Joiner(separator);
	}

	public String join(Iterable<? extends Object> values) {
		Iterator<? extends Object> iterator = values.iterator();
		if (!iterator.hasNext()) {
			return "";
		}
		StringBuilder sb = new StringBuilder().append(iterator.next());
		while (iterator.hasNext()) {
			sb = sb.append(separator).append(iterator.next());
		}
		return sb.toString();
	}

}
{'fraction_non_alphanumeric': 0.1313526192337764, 'fraction_numerical': 0.0, 'mean_word_length': 4.446808510638298, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, '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': '1079112', 'n_tokens_mistral': 429, 'n_tokens_neox': 379, 'n_words': 96}