docs: def findOPLocalIdentifier(service_element, type_uris):
      """Find the OP-Local Identifier for this xrd:Service element.
  
      This considers openid:Delegate to be a synonym for xrd:LocalID if
      both OpenID 1.X and OpenID 2.0 types are present. If only OpenID
      1.X is present, it returns the value of openid:Delegate. If only
      OpenID 2.0 is present, it returns the value of xrd:LocalID. If
      there is more than one LocalID tag and the values are different,
      it raises a DiscoveryFailure. This is also triggered when the
      xrd:LocalID and openid:Delegate tags are different.
  
      @param service_element: The xrd:Service element
      @type service_element: ElementTree.Node
  
      @param type_uris: The xrd:Type values present in this service
          element. This function could extract them, but higher level
          code needs to do that anyway.
      @type type_uris: [str]
  
      @raises DiscoveryFailure: when discovery fails.
  
      @returns: The OP-Local Identifier for this service element, if one
          is present, or None otherwise.
      @rtype: str or unicode or NoneType
      """
      # XXX: Test this function on its own!
  
      # Build the list of tags that could contain the OP-Local Identifier
      local_id_tags = []
      if (OPENID_1_1_TYPE in type_uris or
          OPENID_1_0_TYPE in type_uris):
          local_id_tags.append(nsTag(OPENID_1_0_NS, 'Delegate'))
  
      if OPENID_2_0_TYPE in type_uris:
          local_id_tags.append(nsTag(XRD_NS_2_0, 'LocalID'))
  
      # Walk through all the matching tags and make sure that they all
      # have the same value
      local_id = None
      for local_id_tag in local_id_tags:
          for local_id_element in service_element.findall(local_id_tag):
              if local_id is None:
                  local_id = local_id_element.text
              elif local_id != local_id_element.text:
                  format = 'More than one %r tag found in one service element'
                  message = format % (local_id_tag,)
                  raise DiscoveryFailure(message, None)
  
      return local_id