async def generate_entities(self) -> AsyncGenerator[ChunkEntity, None]:
        """Generate all Google Calendar entities.

        Yields entities in the following order:
          - CalendarList entries
          - Underlying Calendar resources
          - Events for each calendar
          - FreeBusy data for each calendar (7-day window)
        """
        async with httpx.AsyncClient() as client:
            # 1) Get the user's calendarList
            #    For each item, yield a CalendarList entity and store in memory for subsequent calls
            calendar_list_entries: List[GoogleCalendarListEntity] = []
            async for cal_list_entity in self._generate_calendar_list_entities(client):
                yield cal_list_entity
                calendar_list_entries.append(cal_list_entity)

            # 2) For each calendar in the user's calendarList, yield its Calendar resource
            for cal_list_entity in calendar_list_entries:
                async for calendar_entity in self._generate_calendar_entities(
                    client, cal_list_entity.calendar_id
                ):
                    yield calendar_entity

            # 3) For each calendar, yield event entities
            for cal_list_entity in calendar_list_entries:
                async for event_entity in self._generate_event_entities(client, cal_list_entity):
                    yield event_entity

            # 4) (Optionally) yield free/busy data for each calendar
            for cal_list_entity in calendar_list_entries:
                async for freebusy_entity in self._generate_freebusy_entities(
                    client, cal_list_entity
                ):
                    yield freebusy_entity
Generate all Google Calendar entities.

        Yields entities in the following order:
          - CalendarList entries
          - Underlying Calendar resources
          - Events for each calendar
          - FreeBusy data for each calendar (7-day window)
        
backend/airweave/platform/sources/google_calendar.py