reachableUnions :: [Reachability] -> Reachability
reachableUnions xs = do
  cs <- ask
  let rs = map (\x -> runReader (runListT x) cs) xs
  ListT $ return $ concat rs
reachableUnions :: [Reachability] -> Reachability
reachableUnions xs = do
  cs <- ask
  let rs = map (\x -> runReader (runListT x) cs) xs
  ListT $ return $ concat rs
reachableUnions xs = do
  cs <- ask
  let rs = map (\x -> runReader (runListT x) cs) xs
  ListT $ return $ concat rs