code: def _make_record(self, parent, gline):
          
  
          if parent and gline.tag in ("CONT", "CONC"):
              # concatenate, only for non-BLOBs
              if parent.tag != "BLOB":
                  # have to be careful concatenating empty/None values
                  value = gline.value
                  if gline.tag == "CONT":
                      value = b"\n" + (value or b"")
                  if value is not None:
                      parent.value = (parent.value or b"") + value
              return None
  
          # avoid infinite cycle
          dialect = model.DIALECT_DEFAULT
          if not (gline.level == 0 and gline.tag == "HEAD") and self._header:
              dialect = self.dialect
          rec = model.make_record(level=gline.level, xref_id=gline.xref_id,
                                  tag=gline.tag, value=gline.value,
                                  sub_records=[], offset=gline.offset,
                                  dialect=dialect, parser=self)
  
          # add to parent's sub-records list
          if parent:
              parent.sub_records.append(rec)
  
          return rec
docs: Process next record.
  
          This method created new record from the line read from file if
          needed and/or updates its parent record. If the parent record tag
          is ``BLOB`` and new record tag is ``CONT`` then record is skipped
          entirely and None is returned. Otherwise if new record tag is ``CONT``
          or ``CONC`` its value is added to parent value. For all other tags
          new record is made and it is added to parent sub_records attribute.
  
          Parameters
          ----------
          parent : `model.Record`
              Parent record of the new record
          gline : `gedcom_line`
              Current parsed line
  
          Returns
          -------
          `model.Record` or None