docs: def handle_set_citation(self, line: str, position: int, tokens: ParseResults) -> ParseResults:
          """Handle a ``SET Citation = {"X", "Y", "Z", ...}`` statement."""
          self.clear_citation()
  
          values = tokens['values']
  
          if len(values) < 2:
              raise CitationTooShortException(self.get_line_number(), line, position)
  
          citation_type = values[0]
  
          if citation_type not in CITATION_TYPES:
              raise InvalidCitationType(self.get_line_number(), line, position, citation_type)
  
          if 2 == len(values):
              return self.handle_set_citation_double(line, position, tokens)
  
          citation_reference = values[2]
  
          if citation_type == CITATION_TYPE_PUBMED and not is_int(citation_reference):
              raise InvalidPubMedIdentifierWarning(self.get_line_number(), line, position, citation_reference)
  
          if 4 <= len(values) and not valid_date(values[3]):
              log.debug('Invalid date: %s. Truncating entry.', values[3])
              self.citation = dict(zip(CITATION_ENTRIES, values[:3]))
              return tokens
  
          if 5 <= len(values):
              values[4] = [value.strip() for value in values[4].split('|')]
  
          if 6 < len(values):
              raise CitationTooLongException(self.get_line_number(), line, position)
  
          self.citation = dict(zip(CITATION_ENTRIES, values))
  
          return tokens