<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def collect_by_type(obj_sequence, cache=None):
 """ collects objects from obj_sequence and stores them into buckets by type. cache is an optional dict into which we collect the results. """


    if cache is None:
        cache = {}

    for val in obj_sequence:
        key = type(val)

        bucket = cache.get(key, None)
        if bucket is not None:
            bucket.append(val)
        else:
            cache[key] = [val]

    return cache