def cross_context(contextss):
    """
    Cross product of all contexts
    [[a], [b], [c]] -> [[a] x [b] x [c]]

    """
    if not contextss:
        return []
    product = [{}]
    for contexts in contextss:
        tmp_product = []
        for c in contexts:
            for ce in product:
                c_copy = c.copy()
                c_copy.update(ce)
                tmp_product.append(c_copy)
        product = tmp_product
    return product
