<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def schedule(self, api_call, bundle_id, bundle_desc, bundling_request, kwargs=None):
 """Schedules bundle_desc of bundling_request as part of bundle_id. The returned value an :class:`Event` that * has a ``result`` attribute that will eventually be set to the result the api call * will be used to wait for the response * holds the canceller function for canceling this part of the bundle Args: api_call (callable[[object], object]):
 the scheduled API call. bundle_id (str):
 identifies the bundle on which the API call should be made. bundle_desc (gax.BundleDescriptor):
 describes the structure of the bundled call. bundling_request (object):
 the request instance to use in the API call. kwargs (dict):
 optional, the keyword arguments passed to the API call. Returns: Event: the scheduled event. """

        kwargs = kwargs or dict()
        bundle = self._bundle_for(api_call, bundle_id, bundle_desc,
                                  bundling_request, kwargs)
        elts = getattr(bundling_request, bundle_desc.bundled_field)
        event = bundle.extend(elts)

        # Run the bundle if the count threshold was reached.
        count_threshold = self._options.element_count_threshold
        if count_threshold > 0 and bundle.element_count >= count_threshold:
            self._run_now(bundle.bundle_id)

        # Run the bundle if the size threshold was reached.
        size_threshold = self._options.request_byte_threshold
        if size_threshold > 0 and bundle.request_bytesize >= size_threshold:
            self._run_now(bundle.bundle_id)

        return event