cleanPaths :: (Ord c) => System c b e a -> System c b e a
cleanPaths sys = let
  used = Map.fromDistinctAscList
    [(k, undefined) | k <- Set.toAscList $ usedPaths sys]
  in sys { systemPaths = systemPaths sys `Map.intersection` used }
cleanPaths :: (Ord c) => System c b e a -> System c b e a
cleanPaths sys = let
  used = Map.fromDistinctAscList
    [(k, undefined) | k <- Set.toAscList $ usedPaths sys]
  in sys { systemPaths = systemPaths sys `Map.intersection` used }
cleanPaths sys = let
  used = Map.fromDistinctAscList
    [(k, undefined) | k <- Set.toAscList $ usedPaths sys]
  in sys { systemPaths = systemPaths sys `Map.intersection` used }