docs: def phon(self, cls='current', previousdelimiter="", strict=False,correctionhandling=CorrectionHandling.CURRENT):
          """Get the phonetic representation associated with this element (of the specified class)
  
          The phonetic content will be constructed from child-elements whereever possible, as they are more specific.
          If no phonetic content can be obtained from the children and the element has itself phonetic content associated with
          it, then that will be used.
  
          Parameters:
              cls (str): The class of the phonetic content to obtain, defaults to ``current``.
              retaintokenisation (bool): If set, the space attribute on words will be ignored, otherwise it will be adhered to and phonetic content will be detokenised as much as possible. Defaults to ``False``.
              previousdelimiter (str): Can be set to a delimiter that was last outputed, useful when chaining calls to :meth:`phon`. Defaults to an empty string.
              strict (bool):  Set this if you are strictly interested in the phonetic content explicitly associated with the element, without recursing into children. Defaults to ``False``.
              correctionhandling: Specifies what phonetic content to retrieve when corrections are encountered. The default is ``CorrectionHandling.CURRENT``, which will retrieve the corrected/current phonetic content. You can set this to ``CorrectionHandling.ORIGINAL`` if you want the phonetic content prior to correction, and ``CorrectionHandling.EITHER`` if you don't care.
  
          Example::
  
              word.phon()
  
          Returns:
              The phonetic content of the element (``unicode`` instance in Python 2, ``str`` in Python 3)
  
          Raises:
              :class:`NoSuchPhon`: if no phonetic conent is found at all.
  
          See also:
              :meth:`phoncontent`: Retrieves the phonetic content as an element rather than a string
              :meth:`text`
              :meth:`textcontent`
          """
  
          if strict:
              return self.phoncontent(cls,correctionhandling).phon()
  
          if self.PHONCONTAINER:
              s = ""
              for e in self:
                  if isstring(e):
                      s += e
                  else:
                      try:
                          if s: s += e.TEXTDELIMITER #We use TEXTDELIMITER for phon too
                      except AttributeError:
                          pass
                      s += e.phon()
              return s
          elif not self.SPEAKABLE: #only readable elements can hold phonetic content
              raise NoSuchPhon
          else:
              #Get text from children first
              delimiter = ""
              s = ""
              for e in self:
                  if e.SPEAKABLE and not isinstance(e, PhonContent) and not isinstance(e,String):
                      try:
                          s += e.phon(cls, delimiter,False,correctionhandling)
  
                          #delimiter will be buffered and only printed upon next iteration, this prevents the delimiter being outputted at the end of a sequence and to be compounded with other delimiters
                          delimiter = e.gettextdelimiter() #We use TEXTDELIMITER for phon too
                      except NoSuchPhon:
                          #No text, that's okay, just continue
                          continue
  
              if not s and self.hasphon(cls):
                  s = self.phoncontent(cls,correctionhandling).phon()
  
              if s and previousdelimiter:
                  return previousdelimiter + s
              elif s:
                  return s
              else:
                  #No text found at all :`(
                  raise NoSuchPhon