'Permute all the types. For every specific instance of a fused type, we
want all other specific instances of all other fused types.
It returns an iterable of two-tuples of the cname that should prefix
the cname of the function, and a dict mapping any fused types to their
respective specific types.'

def get_all_specialized_permutations(self, fused_types=None):

    assert self.is_fused
    if (fused_types is None):
        fused_types = self.get_fused_types()
    return get_all_specialized_permutations(fused_types)
