// Path: src/main/java/net/kimleo/rec/v2/model/Source.java
// public interface Source<T> {
//     Stream<T> stream();
//     default Source<T> tee(Tee<T> tee) {
//         return () -> this.stream().map(tee::emit);
//     }
// 
//     default Source<T> filter(Predicate<T> predicate) {
//         return () -> this.stream().filter(predicate);
//     }
// 
//     default Source<T> skip(int n) {
//         return from(stream().skip(n));
//     }
// 
//     static <T> Source<T> from(Stream<T> records) {
//         return () -> records;
//     }
// 
//     default void to(Target<T> target) {
//         target.putAll(this);
//     }
// }
// 
// Path: src/main/java/net/kimleo/rec/v2/model/Tee.java
// public interface Tee<T> {
//     T emit(T record);
// 
//     default Source<T> source() {
//         return Source.from(Stream.empty());
//     }
//     default void to(Target<T> target) {
//         source().to(target);
//     }
// }


import net.kimleo.rec.v2.model.Source;
import net.kimleo.rec.v2.model.Tee;
import java.util.Collection;
package net.kimleo.rec.v2.model.impl;



public class CollectTee<T> implements Tee<T> {
    private final Collection<T> collection;


    public CollectTee(Collection<T> collection) {
        this.collection = collection;
    }

    public Collection<T> collect() {
        return collection;
    }

    @Override
    public T emit(T record) {
        collection.add(record);
        return record;
    }

    @Override
// Path: src/main/java/net/kimleo/rec/v2/model/Source.java
// public interface Source<T> {
//     Stream<T> stream();
//     default Source<T> tee(Tee<T> tee) {
//         return () -> this.stream().map(tee::emit);
//     }
// 
//     default Source<T> filter(Predicate<T> predicate) {
//         return () -> this.stream().filter(predicate);
//     }
// 
//     default Source<T> skip(int n) {
//         return from(stream().skip(n));
//     }
// 
//     static <T> Source<T> from(Stream<T> records) {
//         return () -> records;
//     }
// 
//     default void to(Target<T> target) {
//         target.putAll(this);
//     }
// }
// 
// Path: src/main/java/net/kimleo/rec/v2/model/Tee.java
// public interface Tee<T> {
//     T emit(T record);
// 
//     default Source<T> source() {
//         return Source.from(Stream.empty());
//     }
//     default void to(Target<T> target) {
//         source().to(target);
//     }
// }


// Path: src/main/java/net/kimleo/rec/v2/model/impl/CollectTee.java
import net.kimleo.rec.v2.model.Source;
import net.kimleo.rec.v2.model.Tee;
import java.util.Collection;

package net.kimleo.rec.v2.model.impl;



public class CollectTee<T> implements Tee<T> {
    private final Collection<T> collection;


    public CollectTee(Collection<T> collection) {
        this.collection = collection;
    }

    public Collection<T> collect() {
        return collection;
    }

    @Override
    public T emit(T record) {
        collection.add(record);
        return record;
    }

    @Override
    public Source<T> source() {