code: async def start(self, ctx: Context):
          
          for alias in self.component_configs:
              if alias not in self.child_components:
                  self.add_component(alias)
  
          tasks = [component.start(ctx) for component in self.child_components.values()]
          if tasks:
              await asyncio.gather(*tasks)
docs: Create child components that have been configured but not yet created and then calls their
          :meth:`~Component.start` methods in separate tasks and waits until they have completed.