runSliceWith :: (MonadIO m,HaapStack t m) => [FilePath] -> Maybe [Extension] -> Maybe [H.Fixity] -> (String -> Bool) -> (String -> Bool) -> Haap t m ([Decl SrcSpanInfo],Int,Int)
runSliceWith files ext fix isSlice excludeSlice = orLogDefault (def,-1,-1) $ do

    -- sourcegraph
    (_,ms) <- liftIO $ parseHaskellFiles files
    let (map SG.name -> slicednames,cc,noloops) = sliceEntities ms (isSlice . SG.name) (excludeSlice . SG.name)
    
    -- haskell-src-exts
    modules <- mapM (\f -> parseHaskellFileWith f ext fix) files
    let slices = sliceModules modules slicednames
    return (slices,cc,noloops)
runSliceWith :: (MonadIO m,HaapStack t m) => [FilePath] -> Maybe [Extension] -> Maybe [H.Fixity] -> (String -> Bool) -> (String -> Bool) -> Haap t m ([Decl SrcSpanInfo],Int,Int)
runSliceWith files ext fix isSlice excludeSlice = orLogDefault (def,-1,-1) $ do

    -- sourcegraph
    (_,ms) <- liftIO $ parseHaskellFiles files
    let (map SG.name -> slicednames,cc,noloops) = sliceEntities ms (isSlice . SG.name) (excludeSlice . SG.name)
    
    -- haskell-src-exts
    modules <- mapM (\f -> parseHaskellFileWith f ext fix) files
    let slices = sliceModules modules slicednames
    return (slices,cc,noloops)
runSliceWith files ext fix isSlice excludeSlice = orLogDefault (def,-1,-1) $ do

    -- sourcegraph
    (_,ms) <- liftIO $ parseHaskellFiles files
    let (map SG.name -> slicednames,cc,noloops) = sliceEntities ms (isSlice . SG.name) (excludeSlice . SG.name)
    
    -- haskell-src-exts
    modules <- mapM (\f -> parseHaskellFileWith f ext fix) files
    let slices = sliceModules modules slicednames
    return (slices,cc,noloops)