If we make `DocumentEntity` an interface, users can implement lazy loading for it