code: def build(cls: Type[T], data: Generic) -> T:
          
          fields = fields_dict(cls)
          kwargs: Dict[str, Any] = {}
          for key, value in data.items():
              if key in fields:
                  if isinstance(value, Mapping):
                      t = fields[key].type
                      if issubclass(t, Auto):
                          value = t.build(value)
                      else:
                          value = Auto.generate(value, name=key.title())
                  kwargs[key] = value
              else:
                  log.debug(f"got unknown attribute {key} for {cls.__name__}")
          return cls(**kwargs)
docs: Build objects from dictionaries, recursively.