def METHOD_NAME(self, exclude=None, whitelist=None):
    """
    Compile the top file and return the lowstate for the thorium runtime
    to iterate over
    """
    ret = {}
    err = []
    try:
        top = self.get_top()
    except SaltRenderError as err:
        return ret
    except Exception:  # pylint: disable=broad-except
        trb = traceback.format_exc()
        err.append(trb)
        return err
    err += self.verify_tops(top)
    matches = self.top_matches(top)
    if not matches:
        msg = "No Top file found!"
        raise SaltRenderError(msg)
    matches = self.matches_whitelist(matches, whitelist)
    high, errors = self.render_highstate(matches)
    if exclude:
        if isinstance(exclude, str):
            exclude = exclude.split(",")
        if "__exclude__" in high:
            high["__exclude__"].extend(exclude)
        else:
            high["__exclude__"] = exclude
        err += errors
    high, ext_errors = self.state.reconcile_extend(high)
    err += ext_errors
    err += self.state.verify_high(high)
    if err:
        raise SaltRenderError(err)
    return self.state.compile_high_data(high)