docs: def fill(self, passage=None, xpath=None):
          """ Fill the xpath with given informations
  
          :param passage: CapitainsCtsPassage reference
          :type passage: CtsReference or list or None. Can be list of None and not None
          :param xpath: If set to True, will return the replaced self.xpath value and not the whole self.refsDecl
          :type xpath: Boolean
          :rtype: basestring
          :returns: Xpath to find the passage
  
          .. code-block:: python
  
              citation = XmlCtsCitation(name="line", scope="/TEI/text/body/div/div[@n=\"?\"]",xpath="//l[@n=\"?\"]")
              print(citation.fill(["1", None]))
              # /TEI/text/body/div/div[@n='1']//l[@n]
              print(citation.fill(None))
              # /TEI/text/body/div/div[@n]//l[@n]
              print(citation.fill(CtsReference("1.1"))
              # /TEI/text/body/div/div[@n='1']//l[@n='1']
              print(citation.fill("1", xpath=True)
              # //l[@n='1']
  
  
          """
          if xpath is True:  # Then passage is a string or None
              xpath = self.xpath
  
              replacement = r"\1"
              if isinstance(passage, str):
                  replacement = r"\1\2'" + passage + "'"
  
              return REFERENCE_REPLACER.sub(replacement, xpath)
          else:
              if isinstance(passage, CtsReference):
                  passage = passage.start.list
              elif passage is None:
                  return REFERENCE_REPLACER.sub(
                      r"\1",
                      self.refsDecl
                  )
              passage = iter(passage)
              return REFERENCE_REPLACER.sub(
                  lambda m: _ref_replacer(m, passage),
                  self.refsDecl
              )