docs: def subentity(self, Entity, index):
          """Return child entity"""
          dim = Entity.__dimension__
          entity = Entity.empty()
          
          if index >= self.dimensions[dim]:
              raise ValueError('index {} out of bounds for dimension {} (size {})'
                               .format(index, dim, self.dimensions[dim]))
          
          
          for name, attr in self.__attributes__.items():
              if attr.dim == dim:
                  # If the dimension of the attributes is the same of the
                  # dimension of the entity, we generate a field
                  entity.__fields__[name] = attr.field(index)
              elif attr.dim in entity.dimensions:
                  # Special case, we don't need to do anything
                  if self.dimensions[attr.dim] == 0:
                      continue
  
                  # Else, we generate a subattribute
                  mapped_index = self.maps[attr.dim, dim].value == index
                  entity.__attributes__[name] = attr.sub(mapped_index)
                  entity.dimensions[attr.dim] = np.count_nonzero(mapped_index)
  
          for name, rel in self.__relations__.items():
              if rel.map == dim:
                  # The relation is between entities we need to return
                  # which means the entity doesn't know about that
                  pass
              if rel.map in entity.dimensions:
                  # Special case, we don't need to do anything
                  if self.dimensions[rel.dim] == 0:
                      continue
                  mapped_index = self.maps[rel.dim, dim].value == index
                  entity.__relations__[name] = rel.sub(mapped_index)
                  entity.dimensions[rel.dim] = np.count_nonzero(mapped_index)
                  
                  # We need to remap values
                  convert_index = self.maps[rel.map, dim].value == index
                  entity.__relations__[name].remap(convert_index.nonzero()[0],
                                                   range(entity.dimensions[rel.map]))
          
          return entity