'Searches extension elements for child nodes with the desired name.
Returns a list of extension elements within this object whose tag
and/or namespace match those passed in. To find all extensions in
a particular namespace, specify the namespace but not the tag name.
If you specify only the tag, the result list may contain extension
elements in multiple namespaces.
:param tag: str (optional) The desired tag
:param namespace: str (optional) The desired namespace
:Return: A list of elements whose tag and/or namespace match the
parameters values'

def find_extensions(self, tag=None, namespace=None):

    results = []
    if (tag and namespace):
        for element in self.extension_elements:
            if ((element.tag == tag) and (element.namespace == namespace)):
                results.append(element)
    elif (tag and (not namespace)):
        for element in self.extension_elements:
            if (element.tag == tag):
                results.append(element)
    elif (namespace and (not tag)):
        for element in self.extension_elements:
            if (element.namespace == namespace):
                results.append(element)
    else:
        for element in self.extension_elements:
            results.append(element)
    return results
