docs: def one_of_tags(tags, canonical_tag, name=None):
      """Define the tags usable in the :class:`BelParser`.
  
      For example, statements like ``g(HGNC:SNCA)`` can be expressed also as ``geneAbundance(HGNC:SNCA)``. The language
      must define multiple different tags that get normalized to the same thing.
  
      :param list[str] tags: a list of strings that are the tags for a function. For example, ['g', 'geneAbundance'] for the
                      abundance of a gene
      :param str canonical_tag: the preferred tag name. Does not have to be one of the tags. For example, 'GeneAbundance'
                              (note capitalization) is used for the abundance of a gene
      :param str name: this is the key under which the value for this tag is put in the PyParsing framework.
      :rtype: :class:`pyparsing.ParseElement`
      """
      element = oneOf(tags).setParseAction(replaceWith(canonical_tag))
  
      if name is None:
          return element
  
      return element.setResultsName(name)