def METHOD_NAME(xml):
    """Extract paragraphs from xml that could be from  different sources
    First try to parse the xml as if it came from elsevier. if we do not
    have valid elsevier xml this will throw an exception. the text extraction
    function in the pmc client may not throw an exception when parsing elsevier
    xml, silently processing the xml incorrectly
    Parameters
    ----------
    xml : str
       Either an NLM xml, Elsevier xml or plaintext
    Returns
    -------
    paragraphs : str
        Extracted plaintext paragraphs from NLM or Elsevier XML
    """
    try:
        paragraphs = elsevier_client.extract_paragraphs(xml)
    except Exception:
        paragraphs = None
    if paragraphs is None:
        try:
            paragraphs = pmc_client.extract_paragraphs(xml)
        except Exception:
            paragraphs = [xml]
    return paragraphs