code: def __getattr__(self, name):
      if name == "task_composites":
          raise AttributeError(name)
  
      # TODO: Possible bug if no task with _default is passed
      try:
          return getattr(self.task_composites[tasks.common.name], name)
      except AttributeError:
          pass
  
      try:
          return self.task_composites[name]
      except KeyError:
          pass
  
      raise AttributeError(
          f"{self.__class__.__name__} has no attribute {name}"
      )
  
imports: from icevision.imports import *
  from icevision.core import tasks
label_desc: Use image node_id 2 for calling the TaskComposite obj's underlying member method code with example usage: obj.__getattr__(name) and returns: getattr, self