minimask_has_extra(const struct minimask *a, const struct minimask *b)
{
    const uint64_t *bp = miniflow_get_values(&b->masks);
    size_t idx;

    FLOWMAP_FOR_EACH_INDEX(idx, b->masks.map) {
        uint64_t b_u64 = *bp++;

        /* 'b_u64' is non-zero, check if the data in 'a' is either zero
         * or misses some of the bits in 'b_u64'. */
        if (!MINIFLOW_IN_MAP(&a->masks, idx)
            || ((*miniflow_get__(&a->masks, idx) & b_u64) != b_u64)) {
            return true; /* 'a' wildcards some bits 'b' doesn't. */
        }
    }

    return false;
}
minimask_has_extra(const struct minimask *a, const struct minimask *b)
{
    const uint64_t *bp = miniflow_get_values(&b->masks);
    size_t idx;

    FLOWMAP_FOR_EACH_INDEX(idx, b->masks.map) {
        uint64_t b_u64 = *bp++;

         
        if (!MINIFLOW_IN_MAP(&a->masks, idx)
            || ((*miniflow_get__(&a->masks, idx) & b_u64) != b_u64)) {
            return true;  
        }
    }

    return false;
}