docs: def _to_dict(self):
          """Return a json dictionary representing this model."""
          _dict = {}
          if hasattr(self, 'document') and self.document is not None:
              _dict['document'] = self.document._to_dict()
          if hasattr(self, 'model_id') and self.model_id is not None:
              _dict['model_id'] = self.model_id
          if hasattr(self, 'model_version') and self.model_version is not None:
              _dict['model_version'] = self.model_version
          if hasattr(self, 'elements') and self.elements is not None:
              _dict['elements'] = [x._to_dict() for x in self.elements]
          if hasattr(self, 'tables') and self.tables is not None:
              _dict['tables'] = [x._to_dict() for x in self.tables]
          if hasattr(
                  self,
                  'document_structure') and self.document_structure is not None:
              _dict['document_structure'] = self.document_structure._to_dict()
          if hasattr(self, 'parties') and self.parties is not None:
              _dict['parties'] = [x._to_dict() for x in self.parties]
          if hasattr(self,
                     'effective_dates') and self.effective_dates is not None:
              _dict['effective_dates'] = [
                  x._to_dict() for x in self.effective_dates
              ]
          if hasattr(self,
                     'contract_amounts') and self.contract_amounts is not None:
              _dict['contract_amounts'] = [
                  x._to_dict() for x in self.contract_amounts
              ]
          if hasattr(self,
                     'termination_dates') and self.termination_dates is not None:
              _dict['termination_dates'] = [
                  x._to_dict() for x in self.termination_dates
              ]
          if hasattr(self, 'contract_type') and self.contract_type is not None:
              _dict['contract_type'] = [x._to_dict() for x in self.contract_type]
          return _dict