def METHOD_NAME(self, config: dict[str, str], iface: CoreInterface) -> None:
    """
    Build the necessary nem and commeffect XMLs in the given path.
    If an individual NEM has a nonstandard config, we need to build
    that file also. Otherwise the WLAN-wide
    nXXemane_commeffectnem.xml, nXXemane_commeffectshim.xml are used.
    :param config: emane model configuration for the node and interface
    :param iface: interface for the emane node
    :return: nothing
    """
    # create and write nem document
    nem_element = etree.Element("nem", name=f"{self.name} NEM", type="unstructured")
    transport_name = emanexml.transport_file_name(iface)
    etree.SubElement(nem_element, "transport", definition=transport_name)
    # set shim configuration
    nem_name = emanexml.nem_file_name(iface)
    shim_name = emanexml.shim_file_name(iface)
    etree.SubElement(nem_element, "shim", definition=shim_name)
    emanexml.create_node_file(iface.node, nem_element, "nem", nem_name)
    # create and write shim document
    shim_element = etree.Element(
        "shim", name=f"{self.name} SHIM", library=self.shim_library
    )
    # append all shim options (except filterfile) to shimdoc
    for configuration in self.config_shim:
        name = configuration.id
        if name == "filterfile":
            continue
        value = config[name]
        emanexml.add_param(shim_element, name, value)
    # empty filterfile is not allowed
    ff = config["filterfile"]
    if ff.strip() != "":
        emanexml.add_param(shim_element, "filterfile", ff)
    emanexml.create_node_file(iface.node, shim_element, "shim", shim_name)
    # create transport xml
    emanexml.create_transport_xml(iface, config)