def make_stream(name: str, exps: Iterable[CLExperience]) -> CLStream:
    """Internal utility used to create a stream.

    Uses the correct class for generators, sized generators, and lists.

    :param new_name: The name of the new stream.
    :param exps: sequence of experiences.
    """
    s_wrapped: CLStream
    if isinstance(exps, List):  # Maintain indexing/slicing functionalities
        return EagerCLStream(name=name, exps=exps)
    elif hasattr(exps, "__len__"):  # Sized stream
        return SizedCLStream(name=name, exps_iter=exps)
    else:  # Plain iterator
        return CLStream(name=name, exps_iter=exps)
Internal utility used to create a stream.

    Uses the correct class for generators, sized generators, and lists.

    :param new_name: The name of the new stream.
    :param exps: sequence of experiences.
    
avalanche/benchmarks/scenarios/generic_scenario.py